ITエンジニアというと、いかにも理系の知識や専門スキルが必要そうな印象を受けます。しかし、それは誤解です。ここでは、ITエンジニアの職種のうち、理系の知識やプログラミングのスキルが不要な2つの職種「プロジェクトマネージャー」「システムエンジニア」の仕事について、どのようなものか紹介します。
文系こそ向いている?「プロジェクトマネージャー」
プロジェクトマネージャーは、実は各種のITエンジニアのなかでもちょっと特別な存在です。というのも、ほかのエンジニアのように開発の実務には加わらないからです。
プロジェクトマネージャーは、ITシステム開発プロジェクトの現場責任者で略して「ピーエム(PM)」などと呼ばれます。
システムの発注者である顧客(クライアント)と、実際に手を動かして開発する現場のエンジニアの間に立って全体の進行を管理し、予算や納期、作りあげたシステムの品質などプロジェクトの全体に対して責任を負う立場です。
その力量次第で開発の成否が決まるといわれるほど重要な役割を担います。技術力よりマネジメント力が求められるので文系出身の人も多いです。
規模にもよりますがプロジェクトは通常、分野ごとにいくつかのグループに分かれて進められます。
例えば以前僕が担った携帯電話のメールシステムならメールのサーバーを担当するグループ、メールを保存するストレージを担当するグループ、さらにセキュリティを担当するグループといった具合です。
プロジェクトマネージャーは、それらのグループのリーダーを通してプロジェクト全体の進捗を把握し、どこかで問題は起きていないか、負担が大き過ぎて効率が落ちているグループやメンバーはいないか、人員の交代や補充の必要はないか、といったことを細かくチェックして、問題があれば解決を図ります。
また、システム開発の発注者であるクライアントと密に連絡を取って、報告や打ち合わせを重ねプロジェクト全体をリードしていくわけです。
プロジェクトマネージャーに求められるのは、コミュニケーション力と責任感です。
各リーダーや、その下で動いているスタッフの心身の健康状態にも気を配る必要があります。時にはチームを守るために当初のスケジュールや体制を見直すことも必要で、そのときはクライアントとの交渉もします。
また、決断力も求められます。プロジェクトでは予定外のことが起こるのが常です。なんらかの事情で、当初の納期では間に合わなくなる事態が起こります。
そうしたときには、例えばあるグループに集中的に人員を追加投入するとか、この仕様にすると決めていたもののなかからあるものについては思い切って見送り、次のバージョンアップのときに回すといった決断も必要になります。
この点では、コミュニケーション力とともに、決断力も求められる仕事です。また、開発現場に加わらないので細かい専門知識は必要ないとはいえ、全体の指揮を執るうえではシステム開発に関連する幅広い知識は必要になります。
規模の大きなシステム開発になれば、千人単位のエンジニアが1年も2年も関わるということもあります。この全体を率いていくのでプレッシャーもありますが、やりがいは大きいです。
実はコミュニケーション能力が命の「システムエンジニア」
システムエンジニアはシステム開発に取り組む各種のITエンジニアの先頭に立って、まず大きな設計図を描く人です。略して「エスイー(SE)」と呼ばれます。
クライアントから要望を聞き取り、それに沿ってシステムの内容をプロジェクトマネージャーやプロジェクトリーダーと決めていきます。
大切なのが最初に行われる「要件定義」と呼ばれる作業です。
クライアントの要望を聞き取ったうえでそれをどのように解決するのか、要求を基にどういう機能や性能をもったシステムを作るのか、それをシステム開発者の視点で整理した「要望実行書」です。
要件定義で気をつけなければならないのは、クライアントはITシステムについて詳しい知識をもっているわけではないということです。
つまり「あなたが求めている広いということは、こういうことですね」と、プロの目で置き換えて示し、「それそれ、そういうこと!」というゴールで合意しなければなりません。
時にはクライアントの内部に対立が残っていることもあります。
例えば、病院の外来患者の受付から診療、薬の受け渡し、支払いまでの一貫したシステムを作るとします。この場合、医師や看護師などの医療スタッフの求めることと、事務スタッフの求めることはしばしば対立します。
部署間の話し合いができるよう両者が顔を合わせる場を作ったり、そこで両者の意見を吸い上げ「それならこういう仕様のシステムを作ったほうが全体として良いものになるのでは」と議論を導いたりするようなことも、システムエンジニアには求められます。
要件定義が終わったらシステムエンジニアは基本設計を行います。要件を実現するための全体的なシステム構成の設計です。
システム開発についての最新の知識や、より専門的な領域についての動向なども知っておかなければならないので、各分野のスペシャリストからヒアリングをしたり議論をしたりしながら仕上げます。
それができたら次は、システムを構築するための具体的な手法や技術を定める詳細設計に進みます。
具体的にどういう機能をもたせるのか、そのためにコンピュータはどういう処理をしていくのか、操作画面はどういうデザインにするのか、データを保存したり引っ張り出したり書き換えたりするためのデータベースはどのような考え方で作るのか、といったシステムの細かい仕様をすべて決めていく作業です。
これも各分野の専門のエンジニアと相談しながら作りあげていきます。
システムエンジニアに求められるのは、まず、問題解決能力や構想力です。
クライアントが直面している問題をどうすれば解決できるのか、論理的に考え解決策を導くことができなければなりません。そのためにはそもそも何が問題なのかを見つける力が必要です。
問題をいろいろな視点から見直したり、階層に切り分けて分析し検討する論理的な思考力や、時間的な経過を遡ってみたり背景に思いを巡らせる、といった多角的な視野をもつことも必要です。
また、起きている不具合や問題点に精神的に追い詰められない、悩んでいる相手に共感し過ぎないタフな精神力も求められます。
もちろん問題発見のためには、プロジェクトマネージャー同様、コミュニケーション力も大切です。
要件定義をしっかり行うためには、明確な言葉になっていないものにまで遡って相手の求めているものをつかむ必要があるからです。
村岡 佑紀
株式会社リアルインベント 代表取締役社長
コメント