もはや若くないし、頭も悪くなったから、いまテスト駆動開発(TDD)、ドメイン駆動設計(DDD)、DCIを学んでる
今年はプログラミングに再入門してます。
もはや若くないので、自分の「頭の悪さ」を受け入れて、それでも読み書きできるコードを模索してます。
ここでいう「頭の悪さ」とは、「大きなクラスや長いメソッドを理解できない」という脳のスペック的な意味です。
ぼくは二十代の頃と比べて頭が悪くなってしまったので、DDD(ドメイン駆動設計)、TDD(テスト駆動開発)、DCI(データ・コンテキスト・インタラクション)といったソフトウェア工学の成果に興味を持ってます。
抽象度の高いドメインモデリングとかプログラミングって、一見頭がよさそうに見えるかもしれませんが、むしろ(上記の意味で)「頭が悪い」人にこそ必要なんです。
頭が良かったら、もっとCPUに寄り添った高速なコードをすらすら書けるわけです。
頭が悪かったら、人間のメンタルモデルに寄り添った読みやすいコードを書くしかないわけです。
だから、一見高度で抽象的で難解なオブジェクト指向のトピックも、ぼくにとっては「頭が悪くてもプログラミングできるようにするための方法論」です。それはソフトウェア工学の進化を推進してきた力(driving force)だと思いますし。
ついでに言うと、脳のスペック的な意味とは別の「頭の良さ」もありますよね。それは「見識」とか「教養」とか「年の功」とかいうやつです。そういう「頭の良さ」は逆に年をとるにつれてのびていくものです。
実際、ぼくがハタチの頃には理解できなかったであろう『エリック・エヴァンスのドメイン駆動設計』や『実践テスト駆動開発』といった本、あるいはDCIアーキテクチャについての論文は、いまのぼくにはスラスラ入ってきます。現役プログラマを退いて8年ほど立っているのにも関わらず。
一方、現役のころには「大きなクラスや長いメソッド」を理解してプログラミングできたというか、「必要以上の抽象化はオーバーヘッド」だと思っていました。それに、たぶん抽象的な議論を理解できてなかったと思います。当時読んだ『実践UML』という本のGRASP原則についても、当時はほとんど理解できてませんでした。
ここには顕著に二種類の「頭の良さ」の違いが現れています。
なので、若い頃には若さゆえの「頭の良さ」を活かしてプログラミングしてればよかったのですが、もはや若くないので、年をとったがゆえの「頭の良さ」を活かさなければプログラミングがうまくできない。
そのためのDDDやDCIだったりするわけです。社会経験を積んだ人は、ドメインの豊かな知識をコードで表現するということにおいて長けているはずなんです。極端に対置すれば、「プログラミングは得意だけどプログラミングしかできない若者」に対して、その特徴が際立ちますよね。
年をとったら、若い頃とは異なる「頭の良さ」を使わないとプログラミングが難しくなる。
そんなことを考えながら「ゼロベースの管理会計システムを開発するよ」ということで、実践しながら勉強していこうと思ってます。
関連情報
実践テスト駆動開発 テストに導かれてオブジェクト指向ソフトウェアを育てる (Object Oriented SELECTION)
- 作者: Steve Freeman,Nat Pryce,和智右桂,高木正弘
- 出版社/メーカー: 翔泳社
- 発売日: 2012/09/14
- メディア: 大型本
- 購入: 4人 クリック: 251回
- この商品を含むブログ (21件) を見る
エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践)
- 作者: エリック・エヴァンス,今関剛,和智右桂,牧野祐子
- 出版社/メーカー: 翔泳社
- 発売日: 2011/04/09
- メディア: 大型本
- 購入: 18人 クリック: 1,342回
- この商品を含むブログ (119件) を見る