Summary: Programming aptitude and skills are important, of course. But perhaps as important is the ability to relate to and work with the people around you.
This is actually for a school assignment for a class called Human Relations in Organizations. I have to ask someone with a career in my technology these three questions:
1.) What skills do you use everyday to deal with others at work (co-workers and clients)?
2.) How often do you use those skills (a specific number, like a percentage of a typical day, or week)
3.) Do you think a class about human relations should be required for an associates degree in computer programming? Why or why not?
•
Normally I don't answer homework questions. (You'd be surprised at how many I get that are obviously someone trying to get me to do their homework for them.) This one, besides appearing to be an honest question as part of an honest assignment, speaks to something I feel strongly about. And it's not something I would have guessed as I was starting out my career in computer programming.
People are much more difficult to communicate with than computers.
And yet, way more important.
•
Let's go ahead and take 'em in order.
What skills do you use everyday to deal with others at work (co-workers and clients)?
Many. But most of them boil down to variations of one skill:
Communication.
Whether I'm writing an article, as I am right now, or discussing a problem with a client, or going over some task with my assistant, or even discussing business with my wife, it all boils down to effective communication.
I could certainly go on about technical skills and knowledge, of which I do feel I have a fair amount, but what turns all that into something useful is my ability to communicate my ideas and concepts to others. Just as important is responding appropriately to concerns, criticisms and problems raised by any of all of the folks I'm in communication with.
How often do you use those skills (a specific number, like a percentage of a typical day, or week)
I know it's not a number but my off-the-cuff answer is "constantly".
I work at home, usually alone. And even then, via phone and email I'm in constant contact with my assistant, my clients and others. I write articles. I respond to questions (both for Ask Leo! and from my clients.) I interpret needs and turn those into solutions when I'm programming or working some other kind of problem.
It's constant.
I guess 100% of the time is a number. 
Do you think a class about human relations should be required for an associates degree in computer programming? Why or why not?
ABSOLUTELY!
And, no, I'm not trying to suck up to your instructor by saying that.
In a podcast I did some time ago, I talked about what I would do differently If I Had to Do It All Over Again....
The answer?
"I would have paid more attention in English class. Heck, I would have taken more English, grammar, and writing classes."
And really, that's just the tip of the iceberg.
Writing English well is just a component of being able to communicate effectively.
And communicating effectively is just a component of relating to others well.
And nothing in my education really prepared me for what it meant to work in my profession. Yes, I could deal with computers very well. But people? That was a different matter. I did "OK", but it wasn't due to any education or assistance I'd gotten in school. It was really trial by fire; learn as you go.
Looking back, a good Human Relations course could have helped. It certainly would have helped many of the people I've worked with in the years since.
•
As you can tell, and as I started out by warning you, I've developed a little bit of a passion around communicating and interacting with others effectively. That's not to say I do it perfectly - far from it. But I do absolutely believe in its importance.
It's very easy, particularly in technological fields such as computer programming, to focus on the "skills of the trade" without realizing that you will not work in isolation. Your ability to program is important, but I'd claim that your ability to work with the people around you is at least as important. You'll have to take direction, explain problems, pose solutions, listen to disagreements, argue, disagree, apologize, take criticism and more. And all of that from people you may or may not respect; but with whom you still have to work.
The better you can do all that in addition to having those programming skills, the more successful you'll be.
Related:
Ask Leo! - If I Had to Do It All Over Again...
Ask Leo! - How do I become a computer programmer?
Article C3068 - June 26, 2007
Leo and I have worked together previously, and I can confirm that communications is key! This becomes even more critical for people who are not writing the code (program/project managers, functional analysts, software testers, product support) when they are trying to work with developers. Developers pour their heart and soul into their product and it becomes a part of them; other players should be considering this when forming questions, concerns, or suggestions. Good, considerate communications totally changes the team's ability to provide sustainable productivity.
Posted by: Dave B at June 27, 2007 8:29 AMLeo,
May I quote you!?!?!?
I teach computer science at a local community college. The thoughts and ideas you present here are exactly what I've been trying to convey to my students. You have said things in a few sentences that I have been trying to get across during an entire semester.
Great article ! !
Bill
Posted by: Bill Holland at June 29, 2007 8:42 PMI agree with Leo one hundred percent. Once someone has programmed a while in a couple different languages, they likely can pick up whatever new technology comes along next. But communicating well is a whole nother thing. And while not easy or perfect, it is possible to test proficiency at computer programming. Testing for good communication is much harder. Anyone who has read computer books, knows that good communication is brutally rare. It hardly ever exists in combination with technical skills (you never see the manager of a baseball team playing center field). I've read more than my share of computer books and found only two good authors.
Posted by: Michael Horowitz at June 29, 2007 8:43 PMNot just one class, perhaps three or four. Could go a long way toward explaining why humor is often mistaken for viciousness and nastiness on the part of the writer. I receive email from a few web sites where the sender is unaware that what he/she considers humor is viewed by many people as unnecessary rudeness. I believe one might consider this sort of thing as a sure way to lose readership. Even though I understand (usually) what the writer is trying to say, when I have reached saturation point I simply cancel my subscription to the newsletter. I have found I am not unique, either. In correspondence with others on the web, I find they do much the same thing (some with less kindness than I use.)
Posted by: Catmoves at June 30, 2007 12:28 PM-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Bill: Sure! But to be clear, depending on how much you plan or want to quote,
here are the terms for republishing: http://ask-leo.com/terms.html#copyright
Leo
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (MingW32)
iD8DBQFGhrZ5CMEe9B/8oqERAhpGAJ9LnIrmPQzUERaI7nfxhTvBK60mjACfXvV5
Posted by: Leo A. Notenboom at June 30, 2007 1:01 PMm72TogSRoUQ9d+Bo21k4qG8=
=AVPD
-----END PGP SIGNATURE-----
Communicating is essential in programming.
A programming instructor I once had expressed it with "the user doesn't know what they want until you give them what they asked for".
Being able to communicate well can save a lot of problems, and a lot of work down the line.
Posted by: Ken Crook at June 30, 2007 11:07 PMComputers are merely a form of communicating. I am an over the road semi-truck driver. I have seen drivers in a bad mood set at a produce packing shed for 2 days before getting loaded. Drivers are not paid for setting around. I have used some sweet talk ie. please & thank you, and salesmanship to get loaded around other trucks. Normal time to get a door is 5 hours, even the loaders could not believe that I got in that fast. The ability to communicate and instantly build a friendly relationship with others always means more money in your wallet. Give a law officer a hard time and they will get in your wallet and take your money or worse, take you to jail!
Posted by: Greg Wilson at July 1, 2007 11:34 AMGreat post and great comments. If you love programming then there is a good chance that you are an introvert...a person who looks inside themselves for gratification. The sooner you grow out of that and relize that programming starts outside of yourself...with the user...then that's when you will truly be of value to yourself and others. It ain't always easy to do; but any other way is just playing with yourself. Good Luck.
Posted by: John Harris at July 1, 2007 10:33 PMIf there is one other human relationship skill that's important in programming, it's 'don't be a smartass'. What I mean by that is that when a user interacts with your program, they're not interested in seeing how clever you are - what they want is simplicity, ease of use, an intuitive interface.
Posted by: John Ellerington at July 2, 2007 3:11 AMSo the skill is to exercise humility, bury your ego and put yourself in the place of the user who is meeting your creation for the first time. Where judgement and experience are called for is knowing how to design your interface at a sufficiently high level that the user doesn't feel as though you are treating them like an idiot, whilst not making it so complicated that only a rocket scientist can figure it out. Interface design is one of the keys to good programming, and this can only stem from a good understanding of how to relate to other people.
The ability to communicate effectively is a vital part of programming: in particular, in creating an effective and useable user interface. Many applications, though undoubtedly technically brilliant, suffer from being difficult to use, because the programmer did not consider it necessary (vital) to make it easy to use.
What should have been made by genuiuses so that it can be used even by idiots, is all too often made by idiots so that it can be used only by geniuses.
Posted by: John Mihaljevic at July 31, 2007 2:33 AM