見出し画像

俺はシステムエンジニアだが、プログラムを書きたくない

結局、SEってどんな仕事なの?と聞かれて。「とにかくパソコンでプログラムを作る仕事です」と返すこともあるが、これは違う。この説明はプログラマの仕事の説明だ。

はじめに、システムエンジニア(以下「SE」と呼ぶ)と呼ばれる職業人の気質について説明したい。彼らの考え方の根底には、プログラマ(以下「PG」と呼ぶ)と一緒で、「同じことを2度やりたくない」という理念がある。

同じ書類を同じ理由で2度作成したくない。だからプログラム≒マクロを組んで自動化する。PGはプログラム内部も、可能な限り同じ処理を2度書かないように細心の注意を払う。いずれ発生する修正で、2箇所修正することになるとうんざりするのがわかっているからである。PG・SEにとってプログラムというのは「2度同じものを作りたくないもののひとつ」だ。

SEの職業志向

同じようなことはSEの仕事にも現れる。SEの仕事は顧客とPGの橋渡しであり、同時に彼ら自身アプリケーションの作り手でもある。

同じ業務要件で2度同じアプリケーションシステムを作りたくない。だからシステムをパッケージ化して、今後の案件に導入できるようにしておく。このときパッケージは汎用的に使用できるようにするため「標準化」される。さらにいうと、標準機能に対し、必要に応じて追加開発するし、既存システムと類似するものは「パラメータ化」によって対応する。

余談になるが、長いプログラムを修正するときに、バグと、バグが含まれたそのソースコードがRPGのモンスターとダンジョンに見えることがある。モンスターを討伐、すなわちバグを修正することで、クエスト完了というわけだ。この場合、プログラムを作る行為は、そのモンスターを含めた「ダンジョン」の生成に他ならない。既存のシステムで対応できる場合に新規のプログラムを作成したくない理由はここにもある。テストが完了し、現在モンスターのいないダンジョンに新たなモンスターを投入するような愚かな真似はしたくないのだ。

個人的には、パラメータ化によって一つにできそうな複数の処理を見つけたとき、プログラムをぶち壊したい衝動にかられたりもする。プログラムの作成による問題解決を志向しないという点では、PGとSEはやはり異なる職業人になるだろう。

パラメータを設定する仕事

PGは作業をプログラム化し、システムの標準化を志向する。他方でSEはこれに加えてもうひとつの志向をもつ。標準化されたシステムの「先」には、パラメータ化の志向が存在するというのはすでに述べた。これは、業務要件とパッケージがマッチしなかった場合に、それでも導入を進めるために要求された志向である。

業務要件を標準機能に合わせて変更する必要がないように、プログラムを超えて、システムの側で調整ができるようにするのである。これによって、同じプログラムを用いながら、共通化ではなく個別化を実現できるようになる。SEが最終的に行き着くべき極地はそこで、いうなれば「すべてがパラメータになる」状態がシステムの理想形となるのだ。

もっとも、これはどの企業にも存在する基幹業務についての話であって、独特の要件に基づいたスクラッチ開発には全く異なる原則が適用されるだろう。しかし、共通する信念は、「プログラムは無から有を作り出すためにあるべきであって、既存の何かを再生産するために書かれてはならない」ということだ。

システムエンジニアの限界?

PGにとってプログラムを作ることが職業的限界であるように、SEにとってはシステムを作ることが職業的限界である。一般的に、システム開発における企画から製造までの上流・下流の話があるが、ここではそれとは別の話をする。

パッケージシステムはプログラムの外部にあるそのパラメータに、サービス自身を設定することができない。昨今のクラウドサービスを外から眺めていて思うのは、ユーザの業務支援のパラメータとして、各社のクラウドサービスが存在している、ということだ。業務という共通部分に対し、多様な解決策の選択肢が存在しているのは、パッケージソフトの進化系とでもいうべき姿だろうと思う。

PGからSEという流れが、何らかのベクトルで上位と言い表すことができるのだとしたら、クラウドサービスを提供できるものは、同じベクトルでその上位ということができるのかもしれない。

なぜシステムエンジニアが簿記を勉強するのか

最後に、これはぼく個人の話だが、SEには簿記の勉強が有効だと思って勉強している。会計は最もシステム化され尽くした業務だ。会計ソフトは大量に生み出されているし、毎年、法改正に合わせて更新も正確に行われている。簿記を勉強することは、システム化の歴史を勉強することにもつながる。他にも例えば給与計算のシステムであれば、税理士や社労士の勉強も同様のことが言えると思う(こちらはかなり難易度が上がるが)。

ちなみにぼくの一人称は「ぼく」であり、「俺」ではない。つまり、タイトルの「俺」はぼくではなく、したがって、ぼくはプログラムが書きたくないわけではない。