見出し画像

プログラマの大先輩がくれた設計書の至言

Noteはじめました。はじめましてNote。 ぼくも良いお年ごろになってきました。ここでは、読んでくれた人(主にプログラマ・エンジニア)が、ほんの少しでも昨日より良い1日を過ごせるための何かを残していければと思います。※他で書いてたのですがNoteに集約することにしました※

もうかれこれ十数年?数十年?プログラマ/エンジニアとして働いてきた中で …不遇なこともたくさんありましたが… それ以上にたくさんの先輩方からたくさんの素敵なことを教えてもらいました。それのおすそわけです。

決してウィットにとんだ「名言」ではないです。でも当たり前のことを当たり前の言葉で本質を言い当ててくれた「至言」です。

・・・

「設計書ってなんのために作るか知ってる? プログラム書くために作るんだよ」

と、言われたことがあります。

プログラマのみなさんなら経験あると思いますが、無駄な設計書や仕様書を山ほど書かされて 「いいから早くプログラム組ませてー!」 と思ったことは一度や二度じゃないと思います。

もちろん無駄じゃない設計書もあります! すべての設計書や仕様書が無駄だとは思ってないです

(今思えばひどい話ですが...) ある時期 「納品物だから仕方ないや」 と比較的惰性でドキュメントを書いている時期がありました。 納品してもどうせだれも読まないんだし、問題が起きたらどうせソースコードを見るんだし、納品物として出して怒られない程度の分量や見た目で作ればいいかな、くらいの気持ちでした。

ぼくはプログラマなんだから、プログラム組ませてほしい!という心の声。

そんな中で、どういう流れでこの会話になったかは覚えてないですが、当時の客先のベテランエンジニアさんが 「設計書ってなんのために作るか知ってる? プログラム書くために作るんだよ」 とさらっと言ってくれました。

実際には、保守運用のためとか、引継ぎのためとか、納品でお金もらうためとか、、、理由は様々あるのは知っています!! ただ、すべてが「良いシステムを作るため」という流れにぴったりはまった感じがとても気持ちよかったです。

そうなんです。プログラムを書いてサービスがローンチしてビジネスが動き出すことが大事。

そのための準備としての設計書、つまりは、設計という作業をしているということ。 課題の早期発見のためであったり、頭の中のモヤモヤをスッキリさせるために胡麻化さずに数式や表におこして、レビュー、つまり、設計段階でのテストをするために他者が理解可能な形式に明文化する必要がある。逆に言えば、それに必要ないことは書かなくていい。

「お、なるほど」 と、とても腑に落ちました。

ついでに言うと、比較的パートナーのエンジニアなんて格下扱いされる文化があった中で、それを客先≒クライアント側の方がそういう気持ちでいてくれたことも1プログラマとしてとてもうれしかったです。

・・・

あれからずいぶん経ちました。

今でも、何か設計書や仕様書というものを作るときには 「必要だから、必要なだけ作る」 というシンプルな考え方ができるのは、このときの言葉の影響がとても強い気がしています。

みなさんも必要な設計書を書きましょう。 必要ないものは胸を張って 「必要ない」 と言って拒否してみましょう。 わかってくれる人はちゃんとわかってくれます。

今は、わたしもスクラムマスターなるもので頑張ってます。オブジェクト指向、アジャイル、Scrum、XP、そういうものの核となるものの一遍は素敵な先人たちには見えていたんだなと今更ながら感心します。

・・・

蛇足:オーケストラの楽譜

ある種の民謡などの音楽は口伝(や特殊な楽譜)で伝わりますが、いわゆるオーケストラのクラシック音楽などでは五線譜での楽譜があります。
これってシステムの設計書の話にとても似ていて、比較的シンプルで狭い範囲だけで伝わればよいものは口伝や人の頭の中の記憶だけで十分なのですが、それが、いわゆるオーケストラのような1時間近くにもわたる曲を2~30人で演奏するような形態になった場合には、話が変わってきます。 人の頭はそこまでのキャパがないので、作曲をしていく途中から忘れず全体を俯瞰できるために楽譜を書いたり、人に伝えてみんなが等しく理解できるため楽譜が必要だったりします。 1~2桁の暗算は頭でできちゃうけど、100桁の暗算は頭でできないので筆算にするのと同じです。システムだって、自分用の簡単なツールは設計書は書かないですが、100人月の大規模システムなら書かざるを得ないのです。
反面、ある種の民謡などの特殊な音楽性や即興性のあるものにおいては形式的な五線譜では伝えきれないので、師匠と弟子のかたちや、長時間の共同作業の中で伝わっていきます。 こちらはどちらかというとScrum Teamなどの手法に近い方法になります。

この記事が気に入ったらサポートをしてみませんか?