gallu’s blog

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

なぜ「質問」をしないんだろう? 或いは「コード絶対領域」に対する考察

比較的「古い」御仁やら現場やら、に多いように思われるタイプなのですが。
現象としては
・似たような関数やメソッド、下手したら定数までも、をあちこちにcopyして書き散らかす
というのがありまして。
端的に「物凄く、反DRYな感じ」で、おいちゃんとしては「お好まない最たるモノ」の一つ、でございます。

そういったコードをつぶさに観察していくと見てとれるのが
・とにかく、自分の手の届く所に、コピペを含めて全部持ってくる
という行為であることが多くて。
言い方を変えると「他の人とライブラリを共有する」って事を、一切、やらないんですね。

その辺を「コード絶対領域*1」とか呼称してみようか、と思います。
絶対領域、という単語については、「スカートとニーソックスの間の領域」のほうではなくて、「何人にも侵されざる聖なる領域(心の壁)」のほう、を意図しております。

自分の書いたコードは「自分のコード絶対領域」な一方で、他人の書いたコードは「他人のコード絶対領域」なので。
「他人のコード絶対領域のライブラリは使わない」。面倒なんでコピペとかはするんだけど、「自分のコード絶対領域」に持ち込んでからじゃないと、使わないし使えない。
大体、そんな感じでコードをくみ上げて行きます。

そうするとどうなるかってぇと
・同じ機能を持つ、似たような関数があちこちに散らかる
ので、そりゃもぉ大騒ぎ。メンテとか、夢のまた夢でございます。

いやまぁ、そういう風になってしまう背景が、見てとれなくもないんですが。
具体的には、以下のあたりがAND条件で一通りそろったりすると、やむを得ないケースが、無くもないです。

まず「複数社が混在している」か、或いは少なくとも「複数のエンジニアが混在している」環境で。
かつ、その複数に対して「質問が出来る空気でもなく」「質問を投げても返ってこない(か、下手したら怒られる)」環境で。
かつ、全体仕切りがまともに動いていないために「俯瞰した視点を持っている人」がいなくて。
かつ、そのプロジェクトに対する「権限」は全く所持していなくて。
かつ、「責任だけは十全に背負わされる」ので、「防御的開発」をせざるを得なくて。

この辺が揃うと。
他の人が作ったライブラリに下手に依存するコードを書いて「そのライブラリがいつの間にか仕様変更があった」時に、「仕様変更を言ってこなかった相手」ではなく「勝手に使ったこっちが悪い」になってしまうので。
そーゆー環境下で「その現場に限って"コード絶対領域"を発動する」事については、一定の配慮とか理解とか、が、必要だと思うのです。

っつか「責任も権限もないのにカイゼンをしろ」とか、どんだけブラックなんだよ、的な。

ただ。
「そーゆー環境に長いこと居る」とか「"そーゆー環境に長いこと居る"人から教わった」とかで、「コード絶対領域を"普通の事だ"」とか認識されてしまうと、色々と困ったり困ったり殺意が沸いたりするんですねぇ。
っつかそれ、基本的に「防御的開発」に属する技法なので、端的に「プロジェクトがまともに終わらないことを前提にした技法」だよ?。

一方で「そんだけ、闇の深い現場があちこちにあるんだろうなぁ」とか思いつつ。
「闇落ちした開発者」って、その闇をあちこちに散らかしたりしてくるので、それはそれで、浄化したり聖別したり昇華させたり、なんらかの「ナニカ」が必要なんだろうなぁ、とか思ってみたりするですよ。

とりあえずおいちゃんが推奨するのは「まず、質問をちゃんとしようよ」とか言っていたりするのですが。
まぁそもそも「学問とは問い方を学ぶことである」とか、一時期は「質問力」なんて言葉が出てるくらい、「的確に質問をする」ってのは、それなりに難しいもんだと思うんですが。
その辺はやっぱり「鍛えないと」どうにもならないので、まずは「沢山質問をしてみる」からstartして、問い方を学んでいくしかないと思うんですよねぇ。

なので、まずは「とにかく"質問しろ"」と。
「どのように質問するか」の前に「思い込みで答えを出してしまって"質問すること"をしない」ってのを、割とよく見かけるので。

………それを考えると「ある程度丁寧に、しっかりと質問が出来ること」ってのは、開発者のレベルの高低を図る、よい指針の一つなのかもしれないなぁ、などと、思ってみたり。