Demain il fera jour.

とりとめなく,記録

なぜ質問ができないのか?

私は昔から質問が苦手だ.
特にdiscussionになると話について行けない.
これは音声情報に猛烈に弱いという特徴もある*1
そして知っている知識も少ないため,情報がすり抜けてしまい,よく分からない事すらわからなくなる.
いわば知っている事が情報をつなぎ止めるアンカみたいなものになっている.

それでもより理解したいしどうしたら質問できるのだろうということを調べていたら,とある記事を見つけた.

だいぶ前の話になりますけど、「新人にデータ移行ツールのコーディングを任せるので、面倒をみてやってくれ」と頼まれたことがありました。

その新人はやたらとGoogle検索に頼る人で、とにかくわからないことがあると、わたしに聞かずにGoogle先生に尋ねるんですね。

検索サイトにはわたしもかなりお世話になっていますし、昔に比べるととても使い勝手がよくなっていますけれど、その人の技術レベルに対応して検索結果を出してくれるほど高機能なわけではありません。

そのため新人の書いてくるコードは、つぎはぎというかちぐはぐというか、身についてない知識に振り回されてる感が満載でした。

そういう弊害を気にしつつも、自分で調べようとする気持ちは尊重するべきなのかなあ、と思ってとりあえず黙認していたんですが、あるとき「ちょっと考えが甘かった」と思い知らされるトラブルが発生しました。

その新人が「Windowsのレジストリがよく分からない」といってきたのです。

作製中のプログラムにレジストリ操作なんてまったく必要ありません。というか、ヘタにレジストリをいじられたら困ります。

わたし:「なんでそれを聞くの?」

新人:「必要だからです」

わたし:「なんで必要なの?」

新人:「パラメータはコンフィグファイルに記述って仕様に書いてありました」

わたし:「それがどうしてレジストリにつながるの?」

新人:「コンフィグファイルを検索してたらレジストリというのが出てきて、それを理解できないとコンフィグファイルの操作方法が分からないのかと思って……」

普通、「パラメータはコンフィグファイルに記述」という仕様を「パラメータをWindowsのレジストリに書き込む」とは解釈しません。

けれど、Google検索はそれを結びつけてしまいました。Googleはちっとも悪くないんですが……。

聞いてみたところ、新人はレジストリについて、半日悩んでいたそうです。

 もっと早くに聞きにこようよ」というと、「仕事をしてたんでジャマしちゃ悪いかと思って」といわれました。勤務時間内だから仕事してるのがあたりまえだと思うんだが……。プログラミングを教えるのもわたしの仕事のうちなんだが……。

とりあえず、コンフィグファイルについて説明した後で、「今度からもっとはやめに聞きにくるように。それと、調べものはできるだけ本でやるように」と指示を出したわけなんですが、その新人のやってることがどうにも納得いきません。

そこで、「新幹線で仙台まで行け、と東京駅から送り出したら、先に東海道新幹線が来た、というだけの理由で大阪に向かっちゃってる感じなんですよ。この場合、普通の電車に乗って仙台に向かう方がまだ正解ですよね。なんで大阪に行っちゃうんだと思います?」

と同僚に聞いたところ、「そのたとえはどうなんだろ」と前置きしつつも、

「自分が西に向かってることにも気づいてないんじゃないかな」という答えが返ってきました。

自分が北に向かっているのか西に向かっているのかも分かっていない。なるほど、そんな簡単なことに気づきませんでした。我ながらにぶいです。

自分で調べようとする気持ちは大事にするべきだと思いますけど、こんなに遠回りばかりされていてはしゃれになりません。

独学で勉強をしているのなら、どれだけ大回りしてもいつかたどりつければいい、寄り道もムダにはならない、といってあげられますが、仕事でやっているかぎりは、少しでも効率的に覚える義務が発生します。遠回りをしている時間分、ちゃんと給料をもらっているんだということを自覚してもらわなければ困ります。そうやって1人で悩んでいる時間分だけ納期が遠ざかってくれるわけでもありませんし。

というわけで新人に「ググるの禁止!」令を出しました。

参考にしていいのは渡した本だけ。本の記述だけでは不足な場合は、わたしが検索して適切と判断したページのURLを教えることにしました。そして、「30分悩んでもわからなかった場合はわたしに聞きにくること!」といい渡しました。

と、そこまで分かりやすくルールを示せば、聞きにきてくれるようになるんじゃないかと思ってたんですが、その人はやっぱりググることも、長時間1人で悩むこともやめませんでした。

「困ってます~」的なジェスチャーは見せるんですが、聞きにこないんですよ。

最初のうちこそ、「どんな感じ?」と聞きにいってたんですが、なんでわたしが御用伺いをしなくちゃいけないんだろ、と思いなおして、自発的に聞きにくるまで待ってたら、やっぱり半日くらい悩まないと質問にきてくれません。

そんなにわたしに聞くのがイヤか~!

プログラマで、生きている:ググルな危険
http://el.jibun.atmarkit.co.jp/hidemi/2009/11/post-9d2b.html

これなんて私だよって既視感を抱いた.
何がわからないのかがまずわからないため,
具体的にどう質問していいかわからない.
何を聞けばいいかすらわからないから聞きに行けない.

しかし問題を解くときは
問題の詳細の把握が必要.
どこがひっかかかってるのか?を理解してやっと具体的な質問ができる.
つまり具体的に質問ができると言うことは問題の半分をすでに解いてる.
ある程度の知識がないとどこが分からないのかも分からない.
単語がわからないの?流れが分からないの?説明できひんの?

で,次に質問するときにもハードル.
向こうが仕事している手を止めさせるという事.
昔質問しようとしてあからさまにいやがられた記憶もあって人が何かやっているところに行くのがすごく怖い.
甘えなのは分かっているけど難しいんだよーーー.
なのでわからんーってついったに逃げる.

こんな感情まみれの文章よりよっぽどちゃんとしたエントリがあったので覚えておくために張り付け.

teruyastarはかく語りき:なぜ新人は聞きにこないのか?
http://d.hatena.ne.jp/teruyastar/20091118/1258499089

*1:聞き取りができない,というレベルで苦手

とある後輩のつぶやきより.
「「大阪は家、東京は仕事場」 なのね.東京は東京でいいところなんだけど,やっぱり仕事をするとかずっと気を張る必要があるというか.落ち着かないし気の休まる時がない」

自分は生まれたときは兵庫県で,しばらくしてから大学進学まで千葉で育ち,現在大阪で暮らしている.

東京と大阪の違い?

やはり,大阪の方がゆったりとしている.
東京という街は毎日どこかで人のエネルギーによる小爆発が起きているような街.
なんだかんだ言って情報量は桁違いに多い.
情報,機会が増えると自然と人は集まる.
そうして幅の広い人材が集まって行く結果となる.
あふれかえるような情報量の中でいかにして取捨選択して行くか?
「より早く,より自分に合った」情報を自ら選んで行く必要がある.
受動的にもなることはできるが,大抵の場合その情報量に流されてしまい,疲れる.
能動的になると自ら取捨選択して行く必要があるため,疲れる.

一方大阪はなんだかんだ言って情報が制限される.
いやそんなことないかもしれないけれども,従業員10000人以上の大企業の本社が大阪には少ないことを考えると,情報の格差は存在する.
だが,情報の制限によってある程度コンセンサスのようなものが生まれてきて,どこか田舎の雰囲気も持ち合わせている,という街だと思う.
東京人と大阪人の違いでウエットかドライかっていうのがあるけれども,この情報量の差にも起因しているのではないかと思う*1
だが,大阪はある程度大きな街で,かつ,中央の気負いみたいなものは存在しないので「変なもの」を許容する文化も持ち合わせている.
一方田舎になるとコンセンサスで生きている街になるのでそういうコミュニティで生きて行くのは変化が無さ過ぎて耐えられない,と個人的には思う.人それぞれ.

最初の発言のように大阪を家と表現するのはある程度ゆったりとした流れのようなものを感じているためこのような表現になったのか,と感じた.
ぐちゃぐちゃだけどとりあえず公開.

*1:余裕があったら調べてみたら面白いかもしれないなぁ

中心極限定理覚え書き

もともとネットで落ちていたものを少しいじった.
さいころの出た目に関して.
サンプル数1から100まで増やした場合を分けてやってみた

>N=1
> M=2000
> data<-sample(1:6,N*M,replace=TRUE)
> data.mat<-matrix(data,ncol=N)
> sample.mean<-apply(data.mat,1,mean)
> hist(sample.mean,breaks=seq(0,6,by=0.05),xlim=c(0,6),probability=TRUE)
> x<-seq(0,6,by=0.05)
> lines(x,dnorm(x,3.5, sqrt((25/12)/N)),col="red")
> 
> N=2
> M=2000
> data<-sample(1:6,N*M,replace=TRUE)
> data.mat<-matrix(data,ncol=N)
> sample.mean<-apply(data.mat,1,mean)
> hist(sample.mean,breaks=seq(0,6,by=0.05),xlim=c(0,6),probability=TRUE)
> x<-seq(0,6,by=0.05)
> lines(x,dnorm(x,3.5, sqrt((25/12)/N)),col="red")
> 
> N=5
> M=2000
> data<-sample(1:6,N*M,replace=TRUE)
> data.mat<-matrix(data,ncol=N)
> sample.mean<-apply(data.mat,1,mean)
> hist(sample.mean,breaks=seq(0,6,by=0.05),xlim=c(0,6),probability=TRUE)
> x<-seq(0,6,by=0.05)
> lines(x,dnorm(x,3.5, sqrt((25/12)/N)),col="red")
> 
> N=10
> M=2000
> data<-sample(1:6,N*M,replace=TRUE)
> data.mat<-matrix(data,ncol=N)
> sample.mean<-apply(data.mat,1,mean)
> hist(sample.mean,breaks=seq(0,6,by=0.05),xlim=c(0,6),probability=TRUE)
> x<-seq(0,6,by=0.05)
> lines(x,dnorm(x,3.5, sqrt((25/12)/N)),col="red")
> 
> N=15
> M=2000
> data<-sample(1:6,N*M,replace=TRUE)
> data.mat<-matrix(data,ncol=N)
> sample.mean<-apply(data.mat,1,mean)
> hist(sample.mean,breaks=seq(0,6,by=0.05),xlim=c(0,6),probability=TRUE)
> x<-seq(0,6,by=0.05)
> lines(x,dnorm(x,3.5, sqrt((25/12)/N)),col="red")
> 
> N=25
> M=2000
> data<-sample(1:6,N*M,replace=TRUE)
> data.mat<-matrix(data,ncol=N)
> sample.mean<-apply(data.mat,1,mean)
> hist(sample.mean,breaks=seq(0,6,by=0.05),xlim=c(0,6),probability=TRUE)
> x<-seq(0,6,by=0.05)
> lines(x,dnorm(x,3.5, sqrt((25/12)/N)),col="red")
> 
> N=30
> M=2000
> data<-sample(1:6,N*M,replace=TRUE)
> data.mat<-matrix(data,ncol=N)
> sample.mean<-apply(data.mat,1,mean)
> hist(sample.mean,breaks=seq(0,6,by=0.05),xlim=c(0,6),probability=TRUE)
> x<-seq(0,6,by=0.05)
> lines(x,dnorm(x,3.5, sqrt((25/12)/N)),col="red")
> 
> N=60
> M=2000
> data<-sample(1:6,N*M,replace=TRUE)
> data.mat<-matrix(data,ncol=N)
> sample.mean<-apply(data.mat,1,mean)
> hist(sample.mean,breaks=seq(0,6,by=0.05),xlim=c(0,6),probability=TRUE)
> x<-seq(0,6,by=0.05)
> lines(x,dnorm(x,3.5, sqrt((25/12)/N)),col="red")
> 
> N=100
> M=2000
> data<-sample(1:6,N*M,replace=TRUE)
> data.mat<-matrix(data,ncol=N)
> sample.mean<-apply(data.mat,1,mean)
> hist(sample.mean,breaks=seq(0,6,by=0.05),xlim=c(0,6),probability=TRUE)
> x<-seq(0,6,by=0.05)
> lines(x,dnorm(x,3.5, sqrt((25/12)/N)),col="red")
> 
>