第2回:PG・SEってどう違うの?
セツ子の会社でも採用活動がピークを迎え、残業が増えて疲れ気味。
太郎は相変わらず、やれゼミだ、試験だ、サークルだ!と多忙で、セツ子とはゆっくり話せていない。
そんなある日、珍しく一緒に夕食の席についた太郎が、これまた珍しく話しかけてきた。
太郎(太)「ちょっと聞きたいことあるんだけど、『システムエンジニア』って何?」
セツ子(セ)「質問内容が具体的じゃないね。面接でそれやったらダメだよ」
太「えーと……、友達に『システムエンジニアってどういう仕事なの?』って聞かれたんで、コンピュータのソフトを作る仕事だよと答えたら『プログラマーとどう違うの?』って更に聞かれて答えられなかったから定義が知りたいな、と」
セ「つまり『システムエンジニア』と『プログラマー』の違いが知りたいってこと?」
太「そうだね」
セ「質問するときはこれぐらい具体的にね。それじゃ簡単に説明するね」
---プログラマー(PG)とシステムエンジニア(SE)の違い---
1.担当する工程が違う
2.PGの経験を積んだ人がSEになることが多い
3.PGからSEを目指すには俯瞰力が必要
太「PGの上位がSEってこと?工程って?」
セ「ソフトウェアの開発工程って大学で習わなかった?」
太「……聞いたことがあるような……」
セ(講義中に寝ていたのね……)
<「1.担当する工程が違う」について詳しく>
セ「それじゃ、最も一般的な『ウォーターフォール・モデル』で説明します。
開発は主に
1.要求定義
2.外部設計(概要設計)
3.内部設計(詳細設計)
4.開発(プログラミング)
5.テスト
という工程に分かれていて、大まかに言うと1~3までがSEの担当、4と5がPGの担当ということになっているの。」
太「プログラミングは五つある工程の一箇所だけ?」
セ「そう。ただ、作業量は一番多いところだから、4と5は複数人で分担になるね」
太「1~3はどういうことをするの?」
セ「要求定義は、お客様が『そのシステムで、何を実現したいか?』という部分を掘り下げて、こういうシステムを作ります、という要件仕様書を作成するという作業ね。
設計は、すごく大雑把に言うと、お客様が実際にシステムを使う画面や帳票でイメージを考えるのが外部設計、
実際にそのシステムを動かすためにどんなプログラムを作るかを考えるのが内部設計」
太「SEの担当部分の方が、責任が重そうだね」
セ「そうね。そしてPGの工程にも大きな影響を与えることになるわね」
<「2.PGの経験を積んだ人がSEになることが多い」について詳しく>
セ「SEとPGは担当する工程と影響範囲が違うけど、PGの経験を積んで行くと、少しずつSEの工程も手伝うことが増えてくるんだよ」
太「具体的には?」
セ「プログラミングやテストは内部設計書をもとにして実施するから、その内部設計書作成の手伝いをするのが第一歩ね。」
太「なるほど」
セ「そうやって上位工程に関わるようになることで、SEに近づいていくというイメージだね」
<「3.PGからSEを目指すには俯瞰力が必要」について詳しく>
太「これってなんて読むの?」
セ「『ふ・か・ん・り・ょ・く』!システム全体を高いところから見下ろすように見る力、だね。
PGは複数人で分担して行うから、担当部分がちゃんと理解できていれば問題ないの。でも、SEはシステム全体を把握していなければならない。
PGがある日突然SEに変わるわけじゃなくて、自分の周りの人が何をやっているのか、自分のプログラムが他のプログラムにどんな影響を与えているのか、視野を広げて見えるようにしていくことが大事なのよ」
太「……なんとなくわかった気がする」
セ「最後に言っておくけど、SE・PGどちらが偉いということはないからね。
PGがいなければシステムは完成しないし、SEがいなければシステムを作り始められないということだから」
太「了解。友達にはちゃんと伝えておくよ」
セ「なんか怪しいな。ちゃんと自分の言葉で説明できるか、おかんが聞いてあげる」
太「……あ、課題あるんだった。それじゃ」
太郎はそそくさと自分の部屋へ戻って行った。
セツ子(逃げられちゃった、仕方ないか。太郎も自分が目指す職種を真面目に考えているといいんだけど)