2020-06-19

センスのない奴はプログラマになってはいけない

センスの無い奴の問題は、知識がないことではなく、頭がおかしことなんだ。

これは後天的に直せない。そして、センスのないプログラマ他人迷惑をかける。だからセンスのない奴はプログラマになってはいけない。

たとえば、BMI計算するプログラムを作るとしよう。

こんなのは誰でも書ける。身長(m)と体重(kg)を受け取って、(体重)÷(身長*身長)を計算して出力するだけだ。

GUI等をつけたとしても、総コード行数10数行で実装できるだろう。

ところが、センスのないやつは全く違うことを考える。

彼らの一部は、BMI計算するプログラムを作るのに、なぜかユーザー登録画面を作ろうとする。

そして、身長体重のほかに、年齢や性別などの様々なパラメータ管理できるようにし、それらのパラメータを日ごと、あるいは週ごと、あるいは月ごとに入力できるようにし、指定期間での推移をグラフで表示するシステムを作り出す。

ユーザーごとに管理するパラメータの種類は増減するため、BMI計算する場合、「身長体重はどのフィールドに格納されているか」というような間接的な情報必要になり、それを記載した設定ファイル等を読み取る別のプログラムを作り出す。

BMI以外の様々な指標計算させるために、設定ファイルに書ける独自DSLのようなものを作り、パラメータ同士の加減乗除や、指定した期間の移動平均などを計算できるようにする。

データ定義にもとことん拘る。単位を何にするかとか、グラフで表示したときに何色にするかとか、軸に単位を表示するかとか、スケールからはみ出したときにどう表示するか等のありとあらゆる情報を各パラメータに対して定義できるよう設計する。

こうして出来上がった巨大なシステムは、身長Hと体重Wを入力すると、W/H*Hの結果を表示するためだけに使われる。

既に述べたように、ここで問題なのは、彼がYAGNIYou Ain't Gonna Need It.)という原則を知らないことではない。

普通開発者ならあえてそんなことはしない」ということを自然に行ってしまうこと。これが本質的問題なのだ

ちなみに、センスのない奴の頭のおかしさというのは、本当に常軌を逸している。だから、読者がすっと腑に落ちるような例を挙げることは極めて難しい。

たとえば、「数学ができない生徒がいる」という現象説明するためには、「計算問題は解けるが、文章問題は解けない」というような類型を示すことができる。しかし、「センスのないプログラマ」は、常人世界観を超越しているので、そういうシンプルな例示や説明ができない。上に書いたたとえ話ですら、実在する彼らに比べれば、まだマシなのである

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん