見出し画像

冒頭からすでに面白い - 脳に収まるコードの書き方① - ReadLog

概要

タイトル:脳に収まるコードの書き方
ジャンル:技術書(情報系), ソフトウェア開発, プログラミング技法
似てる本:リーダブルコード, 良いコード/悪いコードで学ぶ設計入門
位置付け(たぶん):ソフトウェア開発をしたことのある中級者以上を対象にしてる。
備考:C#とVisual Studioでの例が度々出てくるので、使ったことがない/経験が浅いと読みにくいかも。

ここは本の紹介と記録を目的としたマガジンです。
時間がない人や面白い本を探している人向けです。
本の一部を引用しながら、少しでも興味を持ってもらうことを目指してます。

安易なメタファーによる厄介な誤解

ソフトウェア開発を家を建てるようなものだと考えると失敗します。

p.3 1章 アートかサイエンスか

ソフトウェア開発には、いろいろな進め方があります。
ウォーターフォールだとかアジャイルだとかテスト駆動だとか。
情報系の資格勉強をやろうとすると絶対遭遇するし、なんかいっぱいあってめんどくさいな、というのが本音です。
(一応ざっくり理解しているつもりではあるけど…)

で、なんでそんなにいっぱいあるのかというと、「最適な手段が確立されていない発展途上の業界だから」ということが1章の最後に述べられます。
いまだにプロジェクトは70%ぐらい失敗するらしいですし、これで手段が完成されてたら笑いものです。

ソフトウェア開発は、一部の例外を除いて複数人のチームでやるものです。
全部1人でやれ、って言われたら軽く絶望できますね。

で、複数人で1つの成果物を作り上げる、という要素だけを切り出すと「建設」と似てると言えなくもありません。
どんな建物を建てたいかの「要求」を顧客から聞き出して、建物の図面を「設計」して、建物を完成させる(≒実装?)。
と考えれば、確かにそう建築とソフトウェア開発は同じかも?

しかしこれで分かった気になるのが落とし穴です。そして著者は真っ向からこの考え方を切り捨ててくれます。やったー(?)

①ソフトウェア開発に終わりはない

建物は完成すれば軽いメンテナンスで済みます。
しかし、開発が終わるソフトウェアは「終わっている」ので、もはや価値がありません。開発は永遠に続かなくてはいけません。
どっちにしろ辛いなおい。。。

②完成品が"出来上がる"のは一瞬のこと

コンパイルの瞬間だけが「作成」でコンパイルするまではずっと設計
というのがいい主張でした。

じゃあインタプリタ言語はどうなんねん!!!というツッコミはありつつ、
常々「詳細設計ってほぼ実装コードじゃん」と感じてたのでめちゃくちゃ腑に落ちました。
そっか、あれってギリギリまで設計してたんだね。

③物理的な制約はない

建物は基礎から作らないと建ちません、一方ソフトウェアはどこからだって作れます。
例えるなら、屋根から作ってもいいし、カキワリに内装だけ作るようなことだってできます。建物でそんなことできてたまるか!

その他のたとえ

著者は、ソフトウェア開発を庭づくりでたとえる例も出します。
終わりなき開発が必要なことを示せるので、家を建てるよりは適切だ。と言いつつも

(意訳/要約:庭に勝手に生える植物と違って)
コンピューターとポテトチップス、ソフトドリンクを暗い部屋に投げ込んで、そこからソフトウェアが成長することは期待できません。

p.6

という妙にキレのある表現で指摘しています。
ポテチでソフト作れたらいーのにな

第1章で著者が言いたかったこと

 この章では、ソフトウェア開発とは何かが、「比喩で理解できるほど完成されていない」と背理法的に語られます。
ソフトウェア開発について勝手に分かった気にならず、ひとまず今できるベストを尽くそう。というのがこの章の趣旨です。

 このベストを尽くす方法を知れると期待して読み進めていきます、またね!(次はもう何章か読み進めます。)

次:

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