Category:銀の弾丸 2005-06-27

ヒューマンスキル

SE(システムエンジニア)って何でしょう?今もって分かりません。認定試験らしきものもありますが、免許が無いとできない訳ではありません。「SE」ほど会社や人、または場合によって解釈が異なる言葉もないのではないでしょうか。 バブル期などは肩書きが「プログラマ」ではお客様からお金が取れないので、入社3ヵ月の人も「SE」の肩書きを付けていた企業があります。なんともプログラマを馬鹿にした話です。

私の場合、SEを定式化できていないので、SEもプログラマもみんな「ソフトウエアエンジニア」と呼んでいます。また、同業者と話す時は単に「エンジニア」と呼んでいます。SEとは設計を、プログラマとは実装をする場合の仮の名前に過ぎません。ソフトウエアを作る事を職業にしている人たちはみんな「ソフトウエアエンジニア」です。SEとプログラマの関係は、戦略と戦術の関係に良く似ています。両者は相補的であり、戦術を無視した戦略が存在しない様に、実装を無視した設計はあり得ません。従って、SEは実装の現場経験が必須だと思います。実装経験の無い人達は、「SA」とか「システムコンサルタント」などと呼ぶ様にしています。

前置きが長くなりましたが、本題に移ります。ソフトウエアエンジニアにとって必要なスキルとは何でしょうか? SEとかプログラマとかではなくて、ソフトウエアを作る事を職業とする者にとって、必要なスキルです。ここで、テクニカルスキルを挙げてもあまり面白くありません。一般に、ソフトウエアエンジニアのテクニカルスキルとは、コンピュータに関するスキル(ハードウエア、OS、言語など)とアプリケーションに関する知識(適用分野固有の知識)の事を指します。これらのスキルは実務経験や学習によって培われるものです。個人的な経験から言うと、テクニカルスキルは経験を積めば何とかなります。しかし、常に問題意識を持ち日常的に切磋琢磨しないと、得られないスキルがあります。それは、次の2つです。

  • ヒューマンスキル(対人関係能力)
  • コンセプチャルスキル(概念形成能力)

私はこの2つのスキルがソフトウエアエンジニアにとって最も大切であると思っています。今回は、ヒューマンスキルについて話します。

一般に、ヒューマンスキルとは、自己コントロール能力やコミュニケーション能力など人間社会で生きていく為の基本的な能力の事です。しかし、特にここで言っているヒューマンスキルとはコミュニケーション能力を問題にしています。 毎日の挨拶や掃除、モチベーションの維持などは自己コントロール能力に含まれますが、ここでは問題にしません。しかし、考えて見て下さい。自己コントロール能力の無い人にコミュニケーション能力があるでしょうか?

では、ヒューマンスキル(特にコミュニケーション能力)がなぜ、ソフトウエアエンジニアにとって大切なのでしょうか?それは、システムを使う側も作る側も「人」だからです。ユーザが本当に欲しいソフトを作る事は大変難しい作業です。本当は「ブランコ」が欲しかったのに、出来上がったのは「滑り台」だった。と言うような事を昔はよく耳にしました。GUIの発達が未熟だった頃は、要求仕様書、機能定義書、システム設計書と進むに従い、真の要求が正確に伝わらず、無用な物を作ってしまったものです。GUIが発達しプロトタイピングによる開発が主流となった今日でもこのような誤解は無くなりません。

ヒューマンスキルのないエンジニアはユーザの要求を的確につかむ事ができず、自分の理想やイメージを優先し、誤った方向にシステムを導きます。ユーザへのレビューを怠ると取り返しのつかない所まで実装は進んでしまいます。そして、問題が発覚してから、実装を無理やり要求に合わせようと考えるのです。「そうだ、滑り台の下にブランコを付けよう!」これが彼らのやり方です。

ソフトウエアエンジニアに必要なヒューマンスキルは、ユーザの要求仕様を的確につかむ事です。これはテクニカルスキル(アプリケーションスキル)によって経験的に補えますが、それでは未経験の業務の設計はできません。ユーザとのヒアリング、プレゼンテーション、設計書の作成とレビュー、これらの品質は全てヒューマンスキルによってその良し悪しが決まるのです。

次回は、「コンセプチャルスキル」について話します。


最終更新のRSS Last-modified: Wed, 12 May 2010 08:57:26 JST (2934d)