抽象化について考察を重ねるほど、
抽象化技法は人を選ぶということから目を背けなくなる気がします。
これを保守性に置き換えるとよくわからなくなっていきます。
保守性の高い、
つまり正しく抽象化されたソフトウェアであればあるほど、
保守できる人間が限られてしまうのです。
抽象化が嫌われるのはまさにここで、
一番上の方の抽象化は人類の数%しか理解できないと言っても過言ではありません。
保守しやすいのに保守できる人間が限られる…
でも抽象度を下げると、
(言語のせいってわけじゃないですが)COBOLで作られたソフトウェアと同じです。
属技能性ではなく属人性によって構築されてしまい、
遠くない将来に数%どころか直接関わった数人しか分からなくなってしまいます。
問題をさらにややこしくしているのは、
ソフトウェアが完成した当初は抽象度が低い方が内容を理解している人が多いのです。
(管理者や経営者も含めます。)
まだ技術的負債も膨らんでいないので、
改修にも大きな係数はかかりません。
でも時間が経過していくと技術的負債は大きくなります。
そしてソフトウェア開発に関わっていた人物も徐々に離れていきます。
このあたりで抽象度が高いソフトウェアの保守性が理論上は逆転します。
理論上という表現にしたのは、
まだ長い期間運用されている抽象度の高いソフトウェアが少ないからです。
昔は抽象化技法がまだ発達していなかったので、
これが分かるのは最近開発されたソフトウェアの数十年後の結果となります。
まあ少なくとも、
抽象度の低いソフトウェアの結末は最近のニュースを見ればだいたい分かるでしょう。
それが未来の姿ってわけですね。
たぶんプログラマー的には自明のような話なんですけど、
理解した上で取捨選択しているとはとても思えないのはなぜでしょう。
0 件のコメント:
コメントを投稿