あるSI会社を志望している学生とのやりとりをお伝えします。
「自分の将来をイメージする際に、SEの内容を知ってますか?」という質問をしたところ、実は、あまりイメージできていないとのことでした。そこで、一緒にネットに載っている文章を見ながら検討しました。
システムエンジニアは具体的な業務内容
「SE(システムエンジニア)とはお客様の希望をコンピュータを使って叶える仕事です。「お客様の要求を実現する『システム』を作る」仕事です。
そして、SEの仕事の流れは大きく分けて下のようになります。
※仕事の流れの各段階を「工程」と呼んでいます。
「工程」の区切り方は会社やチームによって異なっています。
1.要求分析(ヒアリング)
お客様の「やりたいこと」「やって欲しいこと」を逃さず聞き出して、「何を作ったらいいのか?」をはっきりさせます。そしてそのシステムを作るのに、どれくらいの人数が必要で、いくらくらいで提案することがいいのかを考えます。
お客様と話をして「何を望んでいるのか?」「それは実現可能なのか?」、「具体的には何を作ればよいのか?」を把握するのがSEの仕事の最初のステップです。
実際の要件分析では、資料を調べ、お客様との打ち合わせを何度も行い、お客様のニーズを漏れなく拾い上げます。これら調査や打ち合わせの結果は、ドキュメントにまとめ、お客様と自分たちの考え方にずれがないようにします。
またお客様自身でも、自分の「やりたいこと」がはっきりしていないことは多いものです。それを見つけてはっきりさせてあげるのもSEの重要な仕事です。
お客様の言うとおりにモノを作っていくだけではありません。
このようにお客様のニーズをしっかり捉えるというこの工程が、SEの仕事では一番難易度が高いと言えます。
2.設計(デザイン)
お客様の要望を一通りまとめたら、今度はそれが実現できるようにシステムの設計をします。建築ならば家の設計図をキチッと描く作業に相当します。これをしっかり行わないと、実際に家を建てる大工さんたちが困ってしまうわけですね。
システム開発では、「どういうやり方でコンピュータをコントロールするのか。」
「システムをどんな部品(分け方によって、モジュール、サブシステム、等と言います)を使ってくみ上げるのか。」といったことを決めていきます。
実際の設計作業の仕方は仕事や人によってまちまちで、会議室で同僚とディスカッションしながら行ったり、一人で集中して考えたりします。
3.実装(コーディング)
設計の段階で作った設計図を元にプログラムを作ります。建築ならば実際の家づくりですね。C言語やJavaといった、プログラミング言語を使って、コンピュータを使ってカタカタカタ・・・とプログラムを書いていきます。
実際には、会社によっても違いますが、SEがコーティングをするケースと、プログラマーの方々と一緒に創り上げるケース、プログラマーの方々に依頼するケースに分かれます。通常は、どのようなプログラムがより速く動くのか、といったことは設計ではあまり意識しません。プログラマはこのような細かい部分を考え、プログラムを書いていく仕事です。こう紹介すると、SEとプログラマは全然別の仕事に思えるかもしれません。しかし、優れたSEにはプログラマの知識が必要不可欠です。
SEがプログラマの知識を持っていないと、プログラマに明確な指示もできないからです。また、例えばシステムが問題を起こしたときに「プログラムのこの辺がおかしいのでは?」と指摘できないと困るからです。プログラマとお客様の両方を理解し、最高のものづくりを進めていく。これが真のSEの仕事です。
4.試験(テスト)
完成品レベルの試験まで様々な試験をする過程になります。
部品の検査 ・部品と部品のつながり方や作り上げたシステム全体の動き等、様々なレベルを変えてチェックしていきます。また、設計や要求分析に使った書類を再確認して、ミスや漏れがないか調べます。もしここで間違いが見つかったら、要求分析、設計、実装のどこに原因があったかを調査して修正をしていきます。
5.納入(リリース)
完成したシステムをお客様に使っていただくことです。実際にお客様の所へシステムを持参し、システムの使い方や特徴を説明し、使い始めてもらいます。
この後に、要求分析工程で行った見積もりに応じて、代金を請求します。
システムエンジニアの仕事のやりがい
SEはコンピュータに向かうだけの仕事ではありません。
お客様あるいはシステムを使う人たちという「人」を相手にした仕事です。
システムエンジニアの「仕事の行為」
このように、SEの仕事の概要が分かったところで、再度、「誰に」「何を」「どのように」で志望企業での仕事内容を詳しく検討しました。
「誰に」
志望企業の顧客先によって、「誰に」が異なります。そして、SEを志望する場合、この「どの会社」の「誰に」を理解することが、決定的に大切です。
「何を」
SEの場合には、会社が得意としているシステム分野のことです。通常、会社によって、仕事領域の重点分野が異なります。
「どのように」
SI会社の場合には設計(デザイン)、実装(コーディング)、試験(テスト)は、チームやグループで行うことがほとんどです。そして、そのチームやグループの構成員(構成会社)を知ることにより、その会社のポジショニングを明確に理解することが出来ます。
SI会社での仕事の役割
このように、広くSI会社に入社したい場合といった場合でも其々の会社での仕事を「分けて」理解して初めて、仕事のやりがいを実感することが出来ます。
因みに、ここまでは、SI会社でのSEの仕事について簡単に紹介しましたが、仕事が発注されるしくみについては、紹介しませんでした。
SI会社の場合には、仕事を誰が受ける役割りを果たしているのか?(営業)を知ると会社のポジションが明確になります。