表現するという事

何においてもそうだとは思うんだけど、上流の抽象度の高い概念を次の工程で具体化するときは、より具体的な概念を使って表現しなおすという作業になる。一般的なソフトウェア開発工程で考えると「要件」は「論理モデル」になり、次に「物理モデル」になり、次に「プログラム仕様」になり、最後は「プログラム」になる。逆にみていくと、「プログラム」は「プログラム仕様」をプログラム言語で表現したものだ。「プログラム仕様」は「物理モデル」をアルゴリズムとプログラム内部のデータ構造で表現したものってことになる。そして、上流の概念と下流で表現されたモノは完全に等価で、上流の概念に忠実でなければならない。
この「表現する」という感覚が、どうも最近の若手に欠けているような気がする。「動きゃいいだろ」みたいなソースコードを量産してコードレビューでこっちがうんざりする度に思う。これは本当に、仕様の忠実な言語表現なのかと。仕様のメモ(急いでいる仕事だったのでメモを作って先に進めていた)では、考えられる条件の組み合わせが整理されているのに、なぜかコードになるとif文の構造が仕様のメモの構造と一致していない(ついでにトポロジーも破綻していた)。仕様と実装が一致してない事を指摘しても、それを理解してもらえず。
orz
ここは一体どこですか? パソコン一年生みたいな人と仕事してるわけじゃないんだけどな。