プログラミングの生産性は抽象化の能力ではないか?
- 初級: ベタ書き, 構造化プログラミング.
- 中級: 抽象化でExpression Problemを解く.
- 上級: コードを生み出すコードを書く.
初心者プログラマはスパゲッティコードを書き, 慣れてくると構造化プログラミングなどのファイル分割, 関数抽出によって重複部分を排除し始める. 中級プログラマになると分岐という📝Expression Problemを解くための抽象化を駆使するようになる. 上級になるとマクロを使ったメタプログラミングや自動化のためのツール/フレームワーク開発, DSL開発などに至る.
初級から中級には壁がある気がして, 意図して訓練しないとなかなか抽象を扱うコードが書けない. 具体的にはJavaを使ってGoFデザインパターンをうまく利用したコードがかけるか.
しかしマクロの先がある. それはそもそも価値を産まないコードを書かないこと. いくら生産性を高めたところでアウトプットにバリューがでなければクソコード.