Ask Slashdot: Communication Skills For Programmers?
An anonymous reader writes "As a new developer at a young-ish software company, I've been told my communication skills need some work. I'm not painfully introverted or socially inept, but I get lost in my work and only contact people if I need something from them or they ask me a question. Traditional advice isn't relevant to casual, less hierarchical companies — I don't have to hold my tongue when someone is wrong or worry about formalities. But I do need to connect with people professionally, since my team members and managers decide my perf and advancement. How do you keep colleagues abreast of your work without having exponentially many needless conversations?"
So this needless communication is actually needful?
Maybe just change your attitude. Forming relationships is very important at work.
Are you sure "communication skills" means that you aren't socializing enough? Perhaps your emails are inadequate, you aren't keeping people informed, aren't discussing ideas with others or are not adequately explaining your ideas.
The fact that you only talk to people when you need some from them is a problem. What about brain storming? Design meetings? Code reviews?
Getting to know people and taking an interest in their lives doesn't hurt either.
Buy it, and read it. Then read it again.
This book changed my life. I had no idea how bad I was at dealing with people until I read it. I re-read it at least once a year.
http://www.amazon.com/How-Win-Friends-Influence-People/dp/0671723650
If I were God, wouldn't I protect my churches from acts of me?
If you didn't screwup in any other way, your manager will put 'communication skills need work' just so it looks like he did something during the last review period.
Send an email to the whole team at the end of each day, summarizing what you've been doing.
John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
Send or post a short note each day where your supervisor can/will read it -
* What I finished - accomplishments, problems solved
* What's coming up - milestones, issues or possible stumbling blocks
That'll keep him in the loop and any conversations can be spurred from there.
Did the person who told you this give you any more detail? Are you not engaging often enough, or are you not good at explaining yourself and listening during the times when you are engaged in conversation? The former is partly a matter of being friendly/comfortable with the people you're around. The latter is critical thinking -- what do I understand, what do they understand, will this choice of words be interpreted how I want, etc.
Evidently, the key to understanding recursion is to begin by understanding recursion. The rest is easy.
I'm fairly introverted (18 out of 20) but I also make time to walk around Operations (I'm a Unix Admin) and chat. While I'm not a sports person, there are folks who share the same interests. So finding out about a few guys who play guitar lets me chat about guitars (or bass). I get to poke at the guys who ride cruisers (I'm not quite old enough for a cruiser yet :) ) and share stories about my own touring rides (going to Alaska again next year). Several are gamers of one sort or another so there's some cross discussion there, even over in Engineering where there's a fellow Shadowrun gamer and another guy who plays Bass.
Heck when I worked at IBM, one of the jobs was remote 100% remote (me here, a couple of folks in Rochester NY, one in Seattle, one in Austin, a couple in New Jersey, and a couple of guys in Boston where the contract was). I had a problem with it _because_ there was no interaction outside of work conversation.
Sure, you're a working guy but networking, even amongst your coworkers is important.
[John]
Shit better not happen!
Not to single you out when there are many other offenders around, but comments like yours remind me of something I don't miss on slashdot. You open up with an unsound criticism of someone's word choice ("exponentially" has an informal non-technical definition that does not equate to geometric growth). You close with a sarcastic putdown. You sandwich good stuff in-between.
Evidently, the key to understanding recursion is to begin by understanding recursion. The rest is easy.
If you think that way, rather than: The purpose of conversation is to tell people what I'm thinking, then you will be a better communicator.
Listen, process what the other person's motives and needs are, and take the opportunity to learn something from them or their perspective.
It you think you know it all already, you are already done, in any business or endeavour.
If you think you know it all and can only pass on information, you are not really that valuable a contributor, because you are probably working hard and cleverly on the wrong problem altogether.
There is always something to learn by active listening. You get more out of conversation that way; appreciation, and knowledge, cumulatively.
Where are we going and why are we in a handbasket?
Communication is a two way thing...your goal should be as much to find out about what others are doing as it is to inform them. Ask what they are doing, listen, then you can relate your similar experiences in response. Ask for advice or confirmation of ideas...people love to be asked to provide advice, and they'll gladly listen to what you are doing in order to be able to fulfill that desire.
I hate to say it but the retention rate for programmers is higher than everyone else. So, when you go to advertise what you've been working on (and yes, it's advertising) sometimes you'll have to re-hash the conversation four or five times. The trick is to re-hash the ideas and talk about things in a different way each time so that the topic doesn't get stale to the audience.
I wish (as do many programmers) that advancement was about nothing but pure ROI to the company (including future ROI) but it doesn't work that way. It's hard to measure, is labor intensive to figure out, and is a waste of time in a small company. So, failing that, you rely on marketing. How you get along with people, small talk, casual banter, idea roundtables at lunch breaks, those all contribute to your "brand image" and you need to take advantage of that image to paint a perception of intellectual value at your company. Make sure you're good enough to provide deliverables to back up your image. You also need to pick one or two things to be REALLY good at so that other people can ask you for help. Helping people helps you.
I think many companies miss the point of good managers. I've had the positive experience of managing a small group of developers and they relied heavily on me to talk with other managers and upper management when it came to projects. I myself understand programming but am not a programmer myself, my background is based in networking and databases admin. I understood that developers needed time and resources to resolve issues or develop new products. It was my job to make sure the programmers had the resources they needed and also to make sure that upper management had a clear understanding of the time table and end result. This made the developers more comfortable and gave management the go between they needed to fully understand project needs. Everyone can not be great at everything, and if a developer is great at coding, but not so good at dealing with management why not have someone who understands be the communicator. Middle management often gets a horrible reputation for being a roadblock, but in some cases it can be exactly what is needed.
Sent from my TARDIS
You've been told that your communication skills need some work. Part of communicating is asking for, and learning how to receive, feedback. So, I'd suggest the following:
DO NOT:
Good luck.
Finding God in a Dog
The least painful (usually) technique is simply to eat lunch with one or more of your co-workers most days. You'd be surprised how much useful information gets shared that way.
I don't care if it's 90,000 hectares. That lake was not my doing.
By communicating on a non-work level you let people in, making them feel more comfortable speaking with you. A good team is one that communicates often and effectively. Above all, by involving yourself in the social dynamic at your work you will gain respect from your colleges. IMHO, respect is very important if you plan on heading a team or department at a later time.
I think you have to first ask what is required here; whether it is simply the quantity of communication, or rather the quality. The team and communication skills of developers are more correlated with success than technical skills. Communication means being able to effectively transmit what you are thinking and understand what others are saying. Perhaps you should ask your co-workers what aspects of your communication they have difficulty with. Is it that you are unclear, or do you not communicate with those you should? Are you really listening to people; by which I mean actually taking onboard what people say? The "needless communication" phrase indicates a certain degree of hostility towards communication. Obviously you should not have 'needless' communications, but clearly your workmates believe there are issues impacting your effectiveness.
" I don't have to hold my tongue when someone is wrong or worry about formalities"
You may not be correct.
That's not quite exactly the same as saying, "You are wrong."
You may not think you have to hold your tongue, but it certainly helps if you hold it in the best position to let other people feel as self-important as you yourself like to feel. It's called empathy. Try to fake it until you make it.
>I don't have to hold my tongue when someone is wrong
I respectfully disagree. You should definitely speak up if something is wrong, and it's good that you're in an environment that allows you to. That being said, I suspect that the number one "communication problem" software developers tend to have is coming across as having an overactive ego, that your word is the divine truth handed down to the unwashed tech-illiterate masses, and that their opinions don't actually matter in the face of the cold, hard facts you bring to the table. I don't think this is the dev's actual attitude (most of the time), but it's so, so easy to come across that way. Coming up with ways to share an idea while making sure your audience understands yet doesn't feel talked down to is a skill I know a lot of devs could stand to learn. If your coworkers feel respected by you, that goes a long way toward improving communications.
The other problem I see frequently is a general lack of visibility into what progress is actually being made on the seething morass of shifting dev priorities. Even something as simple as a daily/weekly project status update e-mail to the right people can do wonders here.
(This question gets deep into greater issues of how much power tech people have and their perceived role in businesses and society, which is far too big a discussion to be had here. Short version: IT experts are witches).
Full disclosure: I am a career software developer, and like to believe I do pretty good at the communicating with business thing.
Unfortunately if you're a talented developer or engineer just writing good code does little for your career. If you want advancement, more responsibility and the pay that comes with it you'll have to learn to communicate effectively. I see lots of talent get pigeon holed in an organization because they can't communicate effectively or become too impassioned about something that is contrary to the perception of management because labels get attached to that individual and those are difficult to get removed. More often than not, the individual leaves or in a layoff situation, especially if that person is very vocal or sticks out like a sore thumb, they're let go. You have to be able to communicate effectively, build conclusive arguments that drive your point and learn to work with your co-workers. Nobody said you had to love everybody or live in a yellow submarine but by doing this and building consensus you can demonstrate that even though you've got talent in development or engineering you also have soft skills and soft skills pay more. I can get Java, C# or C++ developers any time but couple that with somebody who can lead a team and deal with having bumps in the road and then they're a better asset. If they have enough experience and have managed a few successful projects then they're great candidates for further advancement.
Sure, sometimes you have to play company politics and the higher you go unfortunately the more political things become but unless you have killer IP and are running your own place, you'll have to put up with it wherever you go.
Harrison's Postulate - "For every action there is an equal and opposite criticism"
I had a similar situation once in which I was working away as a contractor, but the manager wasn't really aware of everything I was doing.
The best advice I received, which came from an outside source, was to start emailing the team leader and the manager a quick "status" update every week. Just a quick email about what I was working on that week, what I accomplished, and any issues they should be aware of or handle. It worked very well, and it tended to cut down any interruptions from them wandering by asking me "how's it going?" As time went on, they learned to trust me more as a professional, and it became less of an issue.
Now, I hate mandated weekly status reports as much as anyone, but if the perceived problem on their end is that they don't know enough about what you're doing, I would much rather start sending them email with the relevant information. Otherwise, you might find you have to start filling out detailed weekly status reports, attending regular status update meetings, or something else more painful that a quick email.
Have you tried turning it off and on again?
You should be familiar with the proverb "Free as in Beer". There is also another use for beer: It loosens tongues.
Excuse me, but please get off my Pennisetum Clandestinum, eh!
all these years, all those posts, it was you
this whole time it was YOU
MODS PLEASE
Possibly related case:
During a review my boss remarked that my appearance was not entirely up to snuff (my words, not hers). I immediately asked for clarification and got a less than specific answer along the lines of you're usually very put together but, some days you're not, which didn't help much. Months later I was witness to a comment she made about another employees scruffiness. Note to self, she doesn't like 5 o'clock, or in my case 3rd day shadow.
More to the point, did you ask for clarification, examples, guidance? Going about this, in a "flailing in the dark" manner is unlikely to produce the desired results. Social skills covers a wide range of material.
This.
Years ago, my boss pointed me to a good article titled "How to Be a Star Engineer." (Apologies for the annoying format; if you're an IEEE member or university student you can download a PDF).
The article essentially says communication skills and attitude are what differentiates star performers from the rank and file. Understand the people you're working with, what they need, and provide that. Everyone will enjoy working with you, and you will become well-known.
[Sir Garlon] is the marvellest knight that is now living, for he destroyeth many good knights, for he goeth invisible.
My first manager always told me that I needed better communication skills. Mostly this was because she was incompetent and couldn't keep track of her own work much less those reporting to her. In hindsight, I do not blame her, but rather the organization that promoted someone beyond what their skill set could handle.
At the same time, I did work on my communication and organizational skills. Since then I've earned five or six promotions and get consistently high marks in both of these areas. In my twenty years of a professional career, six in management, I've learned quite a bit and learned it can be distilled into just a couple of points
1) Know your audience.
This is the most important aspect of communication. My direct reports have learned (and I have told them) that I trust them and only expect a minimum of communication on a daily basis. I like status reports on a daily or near daily basis that let me know if you are on track. I also want to see reports when you see things going off track. Then we can sit down, go into more detail and I can do my job of providing additional resources or a manager's voice to get cooperation. If it is urgent, see me immediately. if not, it can wait for our 1:1. I want my employees to be able to work without getting sucked into a lot of meeting, be allowed to take ownership of their projects but then leverage my position when they need it.
But that is just me. Some managers want to be in the middle of every technical decision. While I don't agree with this management style, if that is your manager, adapt to his style. If he likes face-to-face daily, then give him the meetings. If he prefers a daily email, go that route. If he is a drop-by-meeting manager (I hate them) then keep talking points by your desk so you are ready.
How do you learn your manager's style? If he is good, he will explicitly tell you. Most managers are not good, however and don't receive any type of training. If this is the case, I'm sure you know who his favorites in the office are. Emulate parts of their style, or explicitly ask them how they deal with the boss. Also, occasionally, ask the boss how you are doing with communication. It will help reinforce that you are trying and he will generally view that favorably. Perception is at least half of the battle on communication...
For non-boss coworkers, communication is easier if you are already communicating well with the boss. Daily statuses on projects via email is likely the route to go. Whatever you are sending to the boss, send a similar update to your team. Develop a standard template so busy readers can scan for what they are looking for.
2) Be Consistent
For each of my direct reports, I created a template for our weekly 1:1's. There are 5-7 items on each that I go through. Sometimes most of the items will be "nothing to report". Others, there are lots. But by being consistent, I make sure everything is covered. I do the same for those I report to, either directly or as part of a project team. If you go the route of daily email updates, make sure they are done every time and have a consistent format. This will help you to be efficient with your time. Then make sure you follow through each day or however often you decide to. This creates a healthy habit in yourself, keeps people in the loop and reinforces the perception that you are an organized team player.
3) Get to the Point in EMail
Folks are busy, so spend a few minutes and think through a problem before emailing on it. When I see a long email on a subject, I immediately assume the person hasn't thought it through themselves and is looking for me to solve the problem. Don't spend three pages writing an essay. Don't go past three back and forths on an email chain. If you really need someone else to help solve something and you can't express it in two or three paragraphs, have a conversation.
Finally, a few minor points
* When getting an assignment, repeat it back to the person who assigned it so they can confirm. In most cases, follow
See my journal for slashdot ID's by year. Mine created in 2005. http://slashdot.org/journal/289875/slashdot-ids-by-year
The manager is the one who has made this comment, so I would surmise that one of two scenarios is at work here:
1. The manager has either noticed for themselves, or they have received feedback about you, to the effect that you do not communicate effectively with others within the company.
2. The manager is looking for a reason to give you a less-than-excellent performance review (a couple of potential reasons for this, the most common one being that the less than perfect review impacts your bonus, thus saving money for the company; alternatively, this could simply be a manager who just does not give excellent reviews because they think it leads to complacent employees).
In both cases, the best thing to do is ask the manager for their advice. You are a young, (relatively) inexperienced person on the team, and from my perspective it is safe to assume that you are interested in improving yourself and doing the best job that you can - that means that if you could self-identify things you can do better, you would have done so and be doing them. So take the manager to one side and explain that you are looking for some specific input about what areas of communication could be improved. Usually in my experience, where it is not a matter of the manager finding fault to save on bonus payments, it is not about communicating more, but more effectively. If that is the case, the best advice I could give is to look up a public speaking organisation - Toastmasters (www.toastmasters.org) is one of the more common ones, and one that I have worked with for a few years. You can learn more about effective communication, and also about leadership as well, both of which will carry your career a lot further if you are a good programmer, than just being a good programmer.
This. When someone initiates a conversation it is for a reason. If the content seems needless then what is occurring is a needful sense of being in communication with another human. Most of our species find this a necessity, so learn to talk nonesense about youor personal life and listen to other people talk about theirs. It turns out this is a useful way to spend time.
Korma: Good
I stopped reading after the first 2.5 sentences because as I programmer, I can see where this is going already and I like to be efficient. So - what you need to do is look yourself up in the employee database. If you don't have access with your user account, just use the root account - noone will mind. First make sure that all communication skills you have are listed, none are left unmentioned. Add missing ones - if you can think of any - to your entry in the database (and if necessary to the meta-table which describes all relevant skills). If all your communication skills are already listed, you'll need to learn some more and then add them. Maybe morse code - that's pretty easy to learn and always comes in handy. Speaking Klingon is always a popular choice too... My personal favourite when it comes to efficiency though is learning to speak backwards: You can easily learn that without even having to sacrifice any of your time by secretly recording yourself with your phone/headset while you're talking and listening to the reversed version of it played back to you, while the other person talks.
And that's already it - so simple. You should manage to figure the rest out on your own, just google "communication". ;) )
( Please don't forget to mark this topic as [solved], so other helpful people don't waste their time clicking on it!
Are you sure "communication skills" means that you aren't socializing enough? Perhaps your emails are inadequate, you aren't keeping people informed, aren't discussing ideas with others or are not adequately explaining your ideas.
The fact that you only talk to people when you need some from them is a problem. What about brain storming? Design meetings? Code reviews?
Several times at my work, where I help with testing/QA (mostly I'm the IT guy, because apparently programmers suck at understanding and maintaining their computers and infrastructure---I guess they're more engineers than anything else, the "science" part of CompSci notwithstanding) I've had to pass on changes that one programmer is doing or projects they're working on to others who are overlapping or would benefit from some good ol' code reuse. There's really rather little communication between them outside of the bugtracker, and most of the time the cases they create for themselves are extremely terse, like
Title: Instance broken
Milestone: Next Possible
Comment: Will fix later.
So even in the one avenue of 'communication' that all of the programmers use, there's really nothing that anyone else can gleam (and you'd better believe they pay extremely little attention to cases not assigned to themselves). I've had multiple cases where programmers have "fixed" something they were annoyed with, and two of them talked about, but meanwhile a third was trying to fix a more legitimate bug and it was seriously aggravated by their fix. And then a tester noticed that "new" bug and it was created and assigned to a fourth programmer. Sigh.
Luckily my office is on the way to the break room, so it's easy for me to catch people and go "hey, are you working on that thing involving X? I hear Susan is working on Y which sounds to my lay ears like it might be related, maybe you two should compare notes." And honestly, sometimes I feel like that's the single most valuable job I do.
I remember sigs. Oh, a simpler time!
Try reading Tess Roeder's book. I recommend you give yourself a crash course in Project Management and give the PMBOK a read. These skills will help you communicate.
You also want to learn some problem-solving strategies. If your workplace doesn't use something like the Kepner-Tregoe Problem Solving and Decision Analysis method, they need to. It will establish a common language and methodology for approaching a problem. 100% of the problem isn't always you; in many organizations, communication has become comfortable but is still terribly poor. In those situations, when you try to intentionally improve you will make the problem worse because suddenly your communications skills will exceed the organization's; you must commit to also leading a communications improvement in the organization if this happens.
Support my political activism on Patreon.
http://dilbert.com/strips/comic/1996-01-12/
"I'm not painfully introverted or socially inept, but I get lost in my work and only contact people if I need something from them or they ask me a question."
The people that get the best reviews are not the ones who work the hardest. They are the ones who impress their bosses and colleagues the most. That may sound a bit cynical, but it is the painful truth. Stop working so hard. Take a breath, look around, and relax a bit. If you are feeling swamped, then you need to set expectations better. Let everyone know that you are really busy, even if you are not. Try simple small talk, like "good morning," and "going to get some coffee, you want some." Treat your boss and people in authority with casual respect, that is, not stiff, but with deference. Take more breaks and run into more people. I learned a long time ago that in IT, perception is more important than results.
The only thing worse than a Democrat is a Republican.
If you have an office job "communication" consists of walking down the hallway to ask (or answer) a question instead of sending an e-mail. It means bumping into someone in the hallway and sharing a thorny problem you are working on (or even gloating on how you just came up with a clever solution.) If you have meetings, make sure you actively participate instead of fiddling with your laptop or phone. You spend time shooting (relevant) shit with your co-workers (and spend some time making small talk; that's important too.)
If you work remotely, it means much the same. Call people on the phone instead of doing everything via e-mail. Send out "FYI" notes if you find something the rest of your team should know. Cultivate a reputation as somebody who asks for advice when needed and is helpful in offering advice/education when requested. If you have regular meetings make sure you regularly get yourself on the agenda discussing something you are working on (either to ask for advice on how to solve a problem, or offering information on how you fixed it.) You can also sign yourself up to inform your teammates about things going on outside your team, like other projects, a new architecture coming down the wire, some new tool that's made your job easier, whatever.
If you don't interact with your team, you've rendered yourself into an utterly replaceable cog, that most certainly can (and probably will) be replaced in the future with somebody else who will offer to do the job cheaper.
all these years, all those posts, it was you
User ID: 3394245
This account is like 3 days old.
Apparently wizard is not a legitimate career path, so I chose programmer instead.
I do not identify myself as an atheist. Technically, I am agnostic, because I know that there is no way to disprove the existence of an omnipotent and omniscient entity. I have no objection to people discussing their theories about such an entity, and I will even admit that some are a lot more entertaining than others. On the other hand, I hate it when people try to use their religious beliefs as arguments for or against anything in the real world. "This man has to die because he is an asshole" is a valid argument, "This man has to die because my Holy Book says the penalty for what he's done is death" is not. Thus, I am only 'unconcerned' with theism and theists as long as they do not pretend that their religious beliefs are in any way relevant to me. As soon as that line is crossed, I become, indeed, an anti-theist.
That said, could you please explain why the Atheist League should be called the Antichrist league, as opposed to the Anti-Kali, Anti-Mohammedan, or Anti-Pastafarian league? Sure, there are tons of different sects that profess the divinity of Christ - Catholics, Eastern Orthodox, Protestants, Mormons, members of the Unification Church, etc... But there are also a lot of sects that do not consider Christ divine, and frankly, I feel a lot more threatened by some of the latter.
The guys who keep trying to bring me to Christ on the streets of Glendora are polite, clean, and well dressed. They bother me a lot less than people who think that I could be killed without spilling blood to fuel a religious rite, that I should pay higher taxes because I am an unbeliever, or that mocking their fairy tales is a capital offense.
So, again, why should people identify as antichrists, instead of atheists if they have no more beef with Christians than they have with other, less... grown-up theists?
No good deed goes unpunished...
> > Understand the people you're working with, what they need, and provide that.
> Worrying about what people think ... then you are still going through puberty and all the pubescent insecurity that entails.
I've said things like that before. Every so often, I have to remind myself of the following:
If your customers think you suck, you do indeed suck. You may have provided them with a wonderful solution to problem X, but since you didn't listen and ask questions you didn't know their problem was Y. For the problem at hand, your solution sucks, and your poor communication caused it.
If you don't "worry about what people think" when it comes to your boss, you'll not know she thinks it's critically important that your application is very easy to use because the old farts in the C suite will be the primary users. Lack of communication = suck, for the purpose at hand.
If the people report to you think you suck, they'll leave, after having no interest in getting your projects done and probably bad mouthing you (accurately). Again, the results suck because you're only interested in what you think.
Being interested in what other people think, need, and want is the first requirement for a successful project. Not paying due attention to what other people think makes you an arrogant asshole.
And you probably won't if you stick to work-subjects while at work.
And that's my point. You've just described people who have different NON-WORK views than you as not "honest" people who "lie".
And that is the problem with advocating that people focus on non-work interests at work.
I usually identify myself as atheist because that doesn't require the explanations that the correct label of anti-theist would. I see an atheist as an agnostic who is sufficiently convinced that supernatural beings don't exist. I am also anti-theist because I think the belief in gods is inherently evil, harmful, corrupting, and otherwise a bad thing.
Just to put the discussion back on track, as an engineer I find communications to be my most difficult challenge. I hold meeting, issue reports, and make sure to talk privately with everyone involved in my projects. Despite a strong concerted effort I still find people under or miss informed. No amount of communication is too much, I'm not sure any amount is sufficient.
The reason we subjugate ourselves to law is to better procure justice. If law does not accomplish this purpose then it m
I wasn't speaking Greek, I was speaking English. A literal translation from one language to another is often quite different than the actual meaning. That's one reason machine translation is so difficult. If you had bothered to do even the tiniest bit of research into the etymology of the word you would know this. Thirteen hours would have been more than enough time.