めもりーさんの『レガシーコードとどう付き合うか』を読んだ。
これは優秀なプログラマであり、CTOとして経営に参画しためもりーさんならではの1冊でした…とはいえ、果たして人生何周目だったらその経験をここまで分かりやすく言語化できるのか分からない。
簡単に言えば、以下の記事の完全版、というか、経営とエンジニアの両サイドから見た「企業が顧客に価値を届けるという営みにおける”エンジニアリング”とは何か?」というテーマなんじゃないかと思います。
[目次]
CHAPTER 01 なぜレガシーコードが生まれやすいのか
CHAPTER 02 レガシーコードを改善するための道筋
CHAPTER 03 レガシーコードを読む力
CHAPTER 04 レガシーコードを改善するための準備
CHAPTER 05 レガシーコードを改善する
特に興味深い記載が、以下の3つのCHAPTERにありました。
CHAPTER 01 なぜレガシーコードが生まれやすいのか
冒頭でPHPのインストール方法が載っていて、「さぁ悪いコード例が出てくるのか?」と思ってCHAPTER 01を読み始めてまず面食らうのは、コードではなく、企業の資金調達フェーズから見た開発への期待値と、なぜそこでレガシーコードというものが生まれるのか、という切り口で語られていることです。
これが今までに語られてこなかった目線なので、非常に興味深い。斬新。
CHAPTER 02 レガシーコードを改善するための道筋
そして続くCHAPTER 02も、そのレガシーコードを改善するための役割、発想として、「経営的アプローチ」と、「開発的アプローチ」の二つの側面から語られます。
特に、おなじみプログラマの三大美徳や、変更容易性、循環的複雑度、テスタビリティなど、エンジニア目線での価値観に多くのページが割かれています。ここはぜひ経営層に人に読んで欲しいところです。
CHAPTER 04 レガシーコードを改善するための準備
一つ飛ばして、CHAPTER 04が、採用も含めた人材戦略から始まる改善の準備が語られていて、視座が高い!
冒頭の、”カレーライスのルーとライスを混ぜるのは簡単ですが、混ぜた後に白い米とルーを分ける作業は容易ではありません。」という説明は、一度手がつけられないほど複雑化してしまったソフトウェアの特性を表す良い表現だな、と思いました。
おわりに
『レガシーコードとどう付き合うか』、実はめもりーさんの著書だ、という理由だけで購入ボタンを押してしまったので、内容を全然知らないで読み始めたので全然期待値が自分の中で形成されない中で読み進めたのだけど、「まさかこんな発想の本があるなんて!」という驚きの連続で、久しぶりに「良い本を読んだなー」と思える1冊だった。
この本は、スタートアップの経営層がエンジニアリングとどう付き合うか、エンジニアはどんな価値観を持っているか、ということを知る良いきっかけになるし、反対にエンジニアサイドが「経営層はなにを考えているか」ということを知るきっかけにもなるので、どちらかが読む、というより一緒に読んで、「共通の価値観、共通の語彙」を作り上げるために読むといいんじゃないかと。
全部で200ページくらいしかないし、必ずしも全部読む必要は無いし。
一方でSI企業だったり、ある程度規模の大きな企業の情報システム部門や、エンジニアが読んだ時に、「完全にここに当てはまる場面」というのは少ないかもしれないけど、それがいつ自分に巡ってくるかは分からないので、やっぱり読んでおいて損はないですね。
というか、こんな本、他にないですよ。
めもりーさんはすごい!、という言葉で締めさせていただきます。