プログラマは標準化できない

プログラマシステムエンジニアに置き換えていただいても結構ですし、うちの上司など、お好きなものに適宜お取替えください。

 元ネタはこの自分のツイートです。まあ、なんでこんなことをツイートしたのかというと、所謂製造業、それも職人が一品ずつ作るような工芸品ではなく、金型などの「型」を使った操業的な製造業では、従業員で作業手順を教わったら、誰が作業をしても結果は同じものができるのに、システム開発では「そうはいかないなぁ」と思い、何が違うんだっっけ、と違いを思いつきで浮かんだのが「金型」だったわけです。

システム開発の型と金型の違い

ウォーターフォールでも別のものでも構いませんがシステム開発手法での型といえば、「システム開発標準」のようなテンプレートになります。

その型は型が電子的な文書でできていることが多いため、データを型で射抜こうと思っても型枠通りにシステム開発の計画ができるわけではありません。

型は標準化としてテンプレートがあったとしても、材料から自分又は関係者から集め、テンプレートを埋めるにしても、集めるデータも、集めたデータをどこに据え付けるかも全部システムエンジニアの裁量におまかせな訳です。

一方、金型は型を据え付け、材料をガイドに合わせて据え付けてプレスすれば金型通りの部品ができるのです。

つまり、システム開発での型は型といいつつ、システムエンジニアに使い方を含め、全部丸投げてしているわけです。一方、金型を使う製造では、作業指示に従ってプレスすれば誰が操作しても同じレベルでの部品が出来上がるわけです。

同じように製造する現場において、同じように型という言葉を使うにしても、全くやり方が違います。

違いの元

金型を使った製造では、誰が作業をしても違いが生じるかどうかは金型に依存します

ところが、システム開発での型、標準化やパターンを使う場合は、標準化で処理の対象となるインプット情報がたとえ同じものであったとしても道具の方法論も様々ですし、それらのうちどれを採用するかは判断するシステムエンジニアや決裁者の判断に依存してしまうのです。

同じようにプログラマシステムエンジニアが仕様書やプログラムを書くにしてもどの言語を採用するかとか、どのようなアルゴリズムを適用するのかとか、個々の最小の部品からして製造する人に依存するのです。

なぜ違いが生じるかといえば、単純な話で、プログラマシステムエンジニアの経験知が同じ人がいないからです。

バラバラの特性

注意深くいえば、金型を使った製造も金型自体の調整や部品の素材のばらつき、作業者の熟練度などで出来上がりの精度はばらつきますが、それでも金型や作業品質のレベルによっては一定の品質を保持しているわけです。

一方、プログラマシステムエンジニアが仕様書やプログラムを書くときはデータ提供元を一元的にしても製造方法をインプットデータの紐付け程度にしなければ、つまりロジックを書かせるのであればばらけるのが当たり前ですから、そもそも標準化などという特性は持っていないことになります。

誰かの特性に片寄する

結局、プロジェクトのアーキテクトや提供されるテンプレートで得られる性質に片寄するのを標準化と呼んでいると言ったら乱暴でしょうか。

でも、そんなもんですよね。金型のような開発ツールなんてみんな文句を言うでしょう。

一人ひとりは特性が違うわけで、アウトプットも違います。とすれば、誰かが持ってきた型と言う標準化やガイドに合わせるわけで、それだって金型とは違うのだから金型のように同じ仕上がりにはなりはしないわけです。

でも、金型のような強制力はないので、あちらこちらばらける。ばらけたところを見つけて標準化に合わせろと言う。いかループ。

だから高いコストがかかるわけで、強制力が強ければみんなはそれを使わないし。(以下略。