2018-12-29

身につけるべきプログラマの習慣 番外編2

番外編の理由は、ICT技術者以前の問題でもあるからです・・・

コミュニケーションの重要性

ビジネスの世界ではコミュニケーション能力の重要性が叫ばれ、多数の書籍が出版されているようです。

一方で、ICTエンジニアは内向的で1人で黙々と作業をしているイメージを持っている世間の人たちも多いかもしれません。そのためなのかは分かりませんが、エンジニア向けのコミュニケーションについて書かれた書籍はなかなか見かけません。

私も長年、基本的には1人で仕事を請け負って自宅で黙々と作業をこなしていました。しかし、お客さんと直接対話をし、漏れなく要求仕様を聞き出さなければシステムの設計もおぼつかないわけで、密度の高いコミュニケーションが求められました。
また、1人で行う作業であっても、プロジェクトの一部を請け負うことも多く、それはつまり実際のところはチーム開発である、ということなのです。

チーム開発では横の繋がりがとても重要です。
残念ながらチームマネージャが技術に疎い人が担当することも多く(技術力が無いからマネージャをやらされる人も多い?)、上からの指示は全く大雑把で、的を射ていることはむしろ希なのです。
そのため、自分たちでなんとかしなければなりません。
自分と相手のどちらが上に立つか、といった低次元かつ下衆な話ではなく、
責任分担、作業分担を相互のコミュニケーションで決める必要があるのです。

責任分他、役割分担はプロジェクトにおいて非常に大切な作業ですが、各自に丸投げにする無責任なマネージャも多いし、コミュニケーション無しに自分勝手に作業を始めてしまうとんでもない人もいます。
実は、この役割分担のコミュニケーションの中で、明確になっていない仕様が表面化することも多く、プロジェクトの成功には欠かせない重要なコミュニケーションの1つであると私は考えています。
本来的、建前的にはマネージャの責任であるとか、そのフェーズ以前の仕事の結果の甘さがこういった重要性を更に引き上げているのですが、実際の現場はそういっただらしなさがむしろ常態化しているものだと考えた方がいいと、今は実感しています。

日本企業の技術力の低さは、もうどうにもならないところまで地に落ちていると感じています。そのうち、大きな破綻が来てしまうことは確実のように思われます。

そういったよろしくない環境であると認識していながらも、自分はコミュ障である?とか人見知り?だとか、生まれ持った自分の特性だ?とか、何がそれを正当化させるのかは知りませんが、極力人とのコミュニケーションを避け、曖昧な仕様を自分勝手に決めて作業を進め、これまた自分勝手に自身の責任の範囲を制限し、それを終えるととっとと休憩していつまでも自分の席に戻ってこない人がいて大変迷惑を被りました。

あなたの周りにも、そんな人はいませんか? 流石にここまで極端な人物は希だと思いますが、こういった人にはこの業界にいて欲しくないというのが本音です。若い人ならまだ更生する可能性はあるでしょうが、そうでもない人にはひたすら去っていただけることを願うばかりです。
また、生まれた国や文化の違いもあり、自分の事(いかに自分の仕事を楽にするか)しか考えられない技術者とも呼べない技術者もこれまで何人も見てきました。

あなたは何の為に技術者になったのですか。金のため? 喰うため? だったら、すぐにこの業界を去った方がいいですよ。この業界は一部の人しか儲かりません。
技術者というのは、良いもの作りをすることが第一義的に意義を感じられる人の事だと、私は信じています。良いものを作り、誰かに、あるいは社会に貢献することです。(自分の独りよがりの良いものでは、当然それは成り立ちません。)

チーム開発で良い結果を残すためにコミュニケーションが重要である、というのは、あえて説明しなくてもその重要性は直感的に理解できる話ではあります。
それでも、そこを軽視する現場のいかに多いことか。

技術者のコミュニケーション手段

人が苦手で人見知りでも、文章は書けるはず。メールであるとか、それに似たコミュニケーション手段もいくつもあります。足りなければ、我々自身が開発すればいい。
会話をして議事録を取るのもいいですが、最初から文章を使ったコミュニケーションは一挙両得かも知れません。
その場に合った、合理的な手段の選択肢を柔軟に取り入れられる現場には活気があります。逆に、その方法を伝統に沿うなどと耳に心地の良い言葉で頑なに変えない、変化を好まない老化した現場には未来もないし、良い結果など残せるはずがありません。そんな死んだ現場、干物のような現場、いや、ミイラ化した現場はさっさと辞めた(抜けた)方が無難です。

常駐している外注人員にメールさえ使わせない、恐ろしく風化した(ミイラさえ風化して形が分からなくなっているほど酷い?)現場もあるのだから、これはもう日本の未来を愁いたほうがいいのかも知れません。

ところで、ICT技術者のコミュニケーションには対人だけではなく、もちろんコンピュータそのものに対するものも含まれると考えています。
プログラミングは最もディープなコンピュータとのコミュニケーションではないでしょうか。もちろん、これは同時に明日の自分を含めた他人とのコミュニケーションでもあります。
動けばいいだけなら、ある意味汚いソースコードを書いても構わないのですが、明日の自分、未来の自分を含めた他人に対する重要なドキュメントでもあるので、分かりやすい書き方が求められます。

どうすれば分かりやすいのか、それはその場の事情によっても異なってきますから、これしかない! と、ここで決め打ちすることは危険です。毎回工夫する必要がある、という点だけは強調しておきたいと思います。それを考えつくようでなければ、プログラミングという創造作業ができるはずはないのでは? と思います。

そのドキュメントはなぜ必要なのか、毎回その必要性、必然性を考えなければなりません。あらゆる選択肢から選ぶ理由を論理的に説明できなければ、それは素人の技術者です。理由を説明することも出来ないのに、その選択を押しつけるような人物は、この世界で最も嫌われます。無能な権力者だからです。

まとめ

まとめられません。
コミュニケーションの重要性は、ICTエンジニアにとって命であるとさえ思いますが、むしろ軽視されている現場の多さに愕然とします。この非常識極まりない世界が、早く終わることを願ってやみません。
人手不足が解消されれば、そういった方々が淘汰され、業界を去って頂く事が出来るのではないかと・・・ いやいや、言い過ぎでしょうか。
体力の無い自分が、一番最初に淘汰されてしまうかも知れません。


0 件のコメント:

コメントを投稿