コードと設計書

昨日、大手SIerの方々と話をする機会があって、そこで出てきたのが、「誰が書いても同じコード」になることが重要で、それを実現するために、ドキュメントをいっぱい書かなくてはいけないという話。大手SIerは、大体同じことを考えていると思います。

でも、「誰が書いても同じコード」にするってのは、そもそも無理だと思うんだよね。そうやって、わざわざドキュメントをたくさん書かせても、めためたなコードを書くやつはいて、総合テストするときに、現場は燃え上がるもの。ある程度の規模以上のプロジェクトなら、どこでもそんな感じじゃないかと思います。

「誰が書いても同じコード」は大事なことなのか - ひがやすを blog

先日Matzさんとお話させてもらったことに、ちょっと似てるかも、と思った。

Rubyのコードはどうやって書くのか(テストから書くとか?といった意味で)聞いてみた。

頭でなんとなく考えて、実装してみて、それを使うモジュール書いて、そんなことしてると誰かがテストを書いてくれる、ということだった。

他の方から僕の場合どうやっているのかと聞かれ、仕事ではまず設計書を書くが、趣味のコーディングだと書きながら考えると話した。

コードを書いている時に、考えて、何かを思いつくことのほうが多いから。

最初に完璧な設計書なんて作れないと話したら、まつもとさんも同意してくださった。

というわけで、まつもとさんにできないことを、僕ができるわけがないんだ!と会社の人に言えますと話した。

Matz x Dan x Daiji「エンジニア進化論」に行ってきた - techlog

コードと設計書を交換可能だと思っているから、こういう考え方になるのかな。


例えば、リンゴの写真が目の前にある。
同じリンゴの写真を見ながら絵を描けば、同じ絵ができあがるだろうか。
例えば、10ページの英語の論文がある。
これを異なるひとが翻訳して、同じ文章ができるだろうか。
もちろんそんなわけがない。


これは僕の能力の問題かもしれないが、同じ処理であっても、いま書くのと、1ヵ月後に書くのでは、同じコードにはならないと思う。
自分の書いたコードも、3日経てば他人のコードだし。


「誰が書いても同じコード」が生成できる設計書というのは、きっと設計書にコードが全て書いてあるんだと思う。