システムエンジニアは「SE」とも言われる職業です。IT業界に関係がない人でも、耳にすることが多い言葉ですが、システムエンジニアという職業を正確に理解している人は少ないと思います。
「システムエンジニアって、どんな仕事なの?」と質問してみると、プログラミングの仕事と思っている人が多いのですが、実は違います。たしかに、システムエンジニアはプログラミングの実務に関わる仕事なのですが、これは主ではありません。
もっと重要な役割がシステムエンジニアには存在します。
システム開発の方向性を決めるのがシステムエンジニア
では、システムエンジニアの役割とは何なのか?
一言でいえば、顧客や営業サイドとの打合わせを行い、システムの目的を方向づけ、設計図を作成することです。
システムを開発する場合には、当然のことですが、顧客の要望を実現出来るように設計する必要があります。そのためには、どのようなシステムを求められているのか、クライアントの意図を明確に把握する必要があります。
クライアントが、プログラミング技術に精通しているとは限らないので、実現するのが難しい要望や、開発コストや時間がかかり過ぎてしまうという要望もあります。
また、クライアント自身が、どこまで要望していいものなのか(どこまで、自分が望んでいることが実現可能なのか)、分からないというケースもあります。
そんな時には、技術的観点から、クライアントの要望が実現出来るためのアドバイスや逆提案をすることになります。
こうやって打ち合わせを重ねて、仕様が固まったら、『どんな部品(モジュールやサブシステム)を使って組み上げていくのか』、『どんなふうにコンピューターを管理していくのか』といった仕様を実現するための設計図をまとめます。
チームで行っている場合には、ディスカッションを繰り返しながら詳細設計を行います。
設計に従ってプログラムを作っていくときには、C言語やJavaのようなプログラミング言語を使って、プログラムを書きます。ソフトウェア開発の仕事のメインとなる業務ですが、クライアントからのヒアリングがうまくいっていれば、順調に業務が進められているはずです。もし躓いているような感じがしたら、もう一度ヒアリングに戻って解決策を見つけましょう。
こうやってプログラムが完成したとしても、作ったままでは終わりません。必ず試験を行い、不具合がないかどうかのチェックをします。設計やヒアリングに使ったドキュメントを再確認しながら、不具合の有無をチェックします。バグが見つかった場合は、原因の所在を確認し、修正します。
完成したシステムをクライアントに納品していくと、クライアントからの要望による修正やメンテナンスが必要になってきます。プログラムは一度作ったらお終いではなく、クライアントに手渡し、運用されてからが本当のスタートです。クライアントのニーズを的確に理解する能力と、クライアントのニーズに応える解決力が問われます。
システムエンジニアに必要な能力
こうやってみていくと、システムエンジニアというのは、プログラミングを行うのではなく、『何をプログラミングするのか?』という設計図作りの部分を担当する仕事であることが分かります。
家を建てるということでいえば、どんな家にするのか、レイアウトを考えて、建築地面を書くのがシステムエンジニア、実際に家を建てる大工さんにあたるのがプログラマーですね。
こんなふうにイメージすれば、システムエンジニアの役割を把握しやすいと思います。
こういった仕事なので、システムエンジニアには、顧客と意思疎通を図ることが出来るだけのコミュニケーションスキルが求められます。
また、会社の内部の様々な部署との調整も必要なので、そういった意味でもコミュニケーションスキルは必須です。
