「技術力がある、技術者を大事にしている」というイメージのあるソフトウェア企業で働いているが、
私の周りの偉い人たちがことごとく「コミュニケーション」を連呼してモヤモヤしている。
ここでの「偉い人たち」は全員(少なくても『元』)技術者であり、そのほとんどは優れた技術者だ。
例えばカーネルコミッタだったり、有名なソフトウェアの開発者だったり、本を書いている人もいる。
雑談になると技術の話で盛り上がることもあるのに、仕事の話になるとやたらと「コミュニケーション」が連呼される。
コミュニケーションが大事なのは分かる。偉い人ならなおさらだ。それを否定するつもりは毛頭ない。
でも私より技術力のある人に「君は技術は十分できるからもっとコミュニケーションを」と言われるとモヤモヤするし、
社内で新しい技術の勉強会などがあるときは「興味がある人は参加してみたら?しらんけど」といった雰囲気なのに、
コミュニケーションのトレーニングに関しては「みんな是非参加するように」と言われるとなんだかなあと思う。
そこで、優れた技術者が出世してコミュニケーションを連呼するようになった理由を考えてみた。
--
人によって程度の差はあれど、多くの人は自分ができることは他の人もできると考えがちで、
自分にとって難しい問題は他人にとっても難しいと考えがちだと思う。
プログラミングが上達してソフトウェア開発のスキルが身につく過程を考えてほしい。
最初はプログラミング言語の文法がわからずコンパイルエラーにあたふたしてた人も、
段々と慣れてきてそれなりに思った通りのプログラムが書けるようになってくると
「文法なんて大した問題じゃない。問題なのはそれを使って何を書くかだ」
なんてことをいっちょ前に言うようになったりする。
とりあえずきちんと動くプログラムを書けるようになった人が、
仕様の変更により大幅な書き直しをするような失敗を経て設計の重要さを実感すると、
「動くプログラムを書くのは大前提。将来の変更を見据えた設計こそが大事だ」
複数のプロジェクトを管理し、複数人に仕事を割り振ったりすると、
「ソフトウェア開発でコーディングや設計が占める割合はほんの一部に過ぎない。
どうやって人と『コミュニケーション』をとるのかが本質になるのだ」
といった類の発言が飛び出すのではないだろうか。
この発言が飛び出す頃には、かつてプログラミングで苦労した記憶など忘れている。
実際問題、自分で設計やコーディングをして困ることはほとんどないのだから。
苦労するのはコミュニケーションだけであり、いかにそれを改善するか苦心する。
--
「結局コミュニケーションが大事なら、コミュニケーションを連呼するのも間違っていないのでは?」
と言われればそうなのかもしれないが、誰にでもそればかり勧めるのはどうにも違和感がある。
うちは自社でソフトウェアを開発している会社だ。手を動かしてものを作る人がかならずいる。
C++のオブジェクトのlifetimeを気にせずセグフォするコードを書く人が受講すべきトレーニングは本当にコミュニケーションの改善法なのか。
業務上Javaを書く必要があるのに「Javaは分からないから」といって自主的にも学ぶ気がない人が受講すべきトレーニングは本当にコミュニケーションの改善法なのか。
実機での動作確認を怠りバグを入れる失敗を複数回繰り返す人が受講すべきトレーニングは本当にコミュニケーションの改善法なのか。
私には何もわからない。
--
「なるほど。そんな問題があったのか。
でもそれは君が相手とうまくコミュニケーションをとって、問題解決を目指すべきだし、
それが難しければ上とコミュニケーションをとって、改善方法を提案すべきだ。
おわり