墜落日記 - 2008年7月4日の墜落
自分は真性の手前勝手プログラマらしい
今日は自戒を込めて墜落してみる。
自分は真性の手前勝手プログラマらしい。
ちょっと本気でそう思った。
「真性のプログラマ」なのではなく「真性の手前勝手プログラマ」である。
例えるなら、そう、オープンソース開発やエンタープライズな大規模開発に居てはいけないタイプの手前勝手である。
で、どうして唐突にそう思ったのかというと………
自分のコントロールを離れてしまったソースを久しぶりに眺めて、自分の設計理念と 180 度違う修正をされていることに気付いて、本格的な怒り狂ったのである。
その修正に関連するデータベースのテーブル定義の変更を調べて、そのあまりの節操の無さに机を思い切り殴りつけた。
ソースを詳細に解析する間、鬱屈した気分を抱え込んでイライラが収まらなかった。
自分の努力が全否定された気がして、全てがどうでも良くなった。
冷静さを取り戻すのに1時間かかった。
冷静さを取り戻してから修正の経緯を問い合わせたのだが、いきなり電話しなかったのは僅かばかり残った忍耐力のなせる技だろう。
正直、危なかった。
ちなみにそのソースコードは共通部品として徹底的にチューンしていた。
自分のポリシーとして、共通部品には特定の呼び出し側の事情を勝手に認識して有効にされるような処理を仕組んではいけないと考えている。
どうしても仕込まなければならない場合、端から見ると共通部品のひとつのモードの様に振る舞うインターフェイスを構築して、呼び出し側にその機能の有効化を指示するように求める。
もちろん呼び出し側がその機能を有効化しない場合には今までと同様に動作する。
それが特定の呼び出し側の為だけの処理であると使う側に気付かせない様にして、共通部品としての独立性をギリギリまで維持するわけだ。
前述の通り、そのソースコードは共通部品として徹底的にチューンしていたので、特定の呼び出し側だけに必要なコードが無節操に入り込むのは自分の設計理念と 180 度違うわけである。
その自分の設計理念と 180 度違う実装は共通部品の共通部品たる独立性を阻み、利用する側に無用な考慮や注意を強いることになりかねない。
それは共通部品としてエレガントではないダメ実装、と、思うのである。
だが、そのソースコード、たしかに最初にコーディングしたのは自分だが、そのコントロール権は自分にはない。
ぶっちゃけちゃうと他人の持ち物であって、自分が四の五の言っていい類の物ではないのである。
つまり怒り狂うこと自体が筋違いなのである。
心の片隅に残った冷静な部分がこの認識を叫んだから、なんとか踏みとどまれた。
さて、そう考えると自分の悪癖が見えてくる。
自分が最初にコーディングしたソースに対してコントロールを維持したい、そのソースコードに対して最初の自分の理念を貫かせたい、自分はそう思う傾向が強い―――が、そう思うのは少なくともエンタープライズな大規模開発では邪魔な思想だ。
たとえ共通チームのチーフプログラマだとしても、そんな自分勝手は通らない。
それに大規模になればなる程に底辺の開発者のレベルはどん底まで落ちるから、事実上コントロールしようとする行為自体が無理になることもある。
呼び出し側のソースのクオリティを維持することも難しいばかりか、共通化チームが構築する共通部品ですら最初の自分の理念が維持できないことも多い。
そんな現実の中で敢えて組織的に特定のソースのコントロールを特定のプログラマに委ねていたら、単純にそのプログラマがクリティカルパスになって危険性が増すだけだ。
ではこれがオープンソースだったらどうだ?
オープンソース開発では最初の内はよくある伽藍方式だろうが、成熟していくとバザール形式に移行するケースがある。
伽藍方式はどちらかと言えば企業などで一般的に行われていたり、クローズドソースなフリーウェアの形式であるが、バザール形式はもう見事なまでにフルオープンだ。
四方八方からアイデア、意見があつまり―――それ自体はとても良いことだ―――そのコーディネートを中心人物が行うか、議会形式で決定する。
そうなるとお互いの話し合い、意見の応酬は当然あるだろうが、自分の最初の構想と 100% 同じ方向を向くとは考えにくい―――自分も納得する方向転換なら話は別だが。
ここで自分のような意固地になる人間がいると、プロジェクトに不協和音が生まれるか、さもなくばフォークしてしまう。
建設的でないフォークはむしろ貴重なヒューマンリソースの分散を招く罪悪で、自分の癖はその引き金になりかねない。
結局、どちらのケースでも自分の癖は邪魔になる気がする………(笑)
う~ん………結局なにか?
自分が人様に迷惑かけないようにするためには、ひたすらに独立独歩でいくしかない、という事なんだろうか………??
大きな仕事には参画せず、自分一人で制御しきれる程度のソースコード量の仕事をちまちまと片付けて日銭を稼ぐような………個人事業主??(爆)
さもなければ最後まで自分がコントロールを維持できるパッケージでも作って売り歩くか………?
う~ん………(汗々)
コメントは投稿されていません。