プログラマyasuhoの隠れ家

某ソフトウェア企業に勤務するおじさんプログラマyasuhoです

プログラマには、どんなコミュニケーションスキルが必要なの?

プログラマに必要なコミュニケーションスキルは問題を正確に把握し、適切な解決方法を提供できる能力だと思う。

私は新興ソフトウェア企業の若い開発者だが 、仕事にはコミュニケーションスキルが必要 だと言われている。

プログラマー向きのコミュニケーションスキルってどんなもの? | スラッシュドット・ジャパン Slashdotに聞け

求人広告の募集要項によくあるのが「コミュニケーション能力の高い人」

コミュニケーションスキルが高いって

どういうことだと思う?

明るくて、誰とでも気軽に話せる?知らない話題でも上手に合わせられる?プレゼンがうまい?

まあそういうのもスキルの一つかもしれないけど、プログラマにはプログラマとして求められるスキルっていうのがあるんじゃないかな。

以前も書いたけど

プログラマという仕事の大部分は

  • 問題を聞いて
  • 解決方法を考えて
  • 問題を解決するコードを書く

という作業の繰返しなんだ。これがスムーズに出来るかどうかが、プログラマにとって最も大切なコミュニケーションスキルだと感じている。これがうまく行けば、相手はだんだん自分を信頼してくれるようになり、責任のある仕事も増えてくるんじゃないかな。

じゃあ具体的にどうすれば

これらがスムーズにできるようになるのか。ぼくなりに整理してみた。

問題を聞いて

言うまでもないけど、ここが最も大切。「聞く」っていうのは、要するに相手が求めていることを理解するっていうこと。

よくあるのは、話の途中で「これはたぶんこういうことだな」って思い込んじゃったり、「でも自分はこう思う」って反論を考えだしちゃうこと。自分の話してることと違うことを相手が言い出したら、イヤな気分になっちゃうよね。そういうこと。

解決方法を考えて

(愚痴とかでもない限り)問題を相談してくる人は、その人に対して解決方法を求めてる。だから、次のアクションは、それに対して解決方法を提示すること。

適切な解決方法を提示できるかどうかは、自分がどれだけ多くの知識を持っているかどうかにかかっている。プログラマなら、コンピュータに関する様々なことを勉強しよう。そして、出来る限りそれを実践しよう。実際に書いたことのないプログラマが書いたコードなんて、信じられないでしょ!? :)

多くの選択肢を提示できることも大切だ。提示する時はメリットとデメリットも説明する必要がある。多種多様な選択肢を提示するためには、やっぱり学習と経験だ。

問題を解決するコードを書く

この業界には「言い出しっぺの法則」ってのがあってね(笑)

「ここはこうした方がいいと思います」って意見は、十中八九「じゃあやって」って話になると思っておいた方がいい。プログラマなら、どんなコードでも書けることを目標に鍛錬しておこう。様々なアルゴリズム、様々なプラットフォームでの開発経験があるとないとでは、問題解決の速度が違う。

デバッグ能力も大切だ。とかく新しいことは訳の分からない問題に遭遇しやすい。困難でも、すぐに問題を解決しなきゃいけないってこともある。これはとにかく場数を踏むしかない。特に困難な問題に遭遇した時に向上するから、可能な限り困難な問題に挑戦しよう。

要は言ったからには解決するところまでやろうってこと。コミュニケーションとはちょっと違うかもしれないけど、大事なことだと思うよ。

とまあ偉そうに書いてきたけど

ボク自身は全然できてなくって、コミュニケーションじゃいつも苦労してるのよ(笑)

上記は「こうありたい」っていう理想だと思ってくれていいよ :)

そうそう

コミュニケーションスキルって言葉の範囲はとても広いから、求められることは会社や組織によって違う。上に書いたのは一般的なプログラマに求められることであって、チームの雰囲気にあわない人だったら採用されないかもしれない。

だから、募集要項にコミュニケーションスキルとあったら、具体的にどんなことを求めているのか聞いた方がいいと思う。ここがあわないと、自分にとっても会社にとっても不幸だからさ。