type t (* void *)

ソフトウエアのこととか

一飯の話: 質問の仕方

自分用整理メモ。ウェブ上での主にプログラミングの質問の仕方について。

典型的な質問パターン

「XXXをやりたいのですが、YYYをしてみると、ZZZが起きて動きませんでした。どういう風にすれば良いでしょうか。」

まず公式のマニュアルを読む・サーチエンジンで検索する

公式のマニュアルは最も正確な情報が得られるので確認する。 典型的な問題は既に誰かが踏んでいるのでそういうのは検索する。
StackOverFlowなど英語でも避けずに読む。

何がやりたいのか目的を伝える

しばしばネット上では目的不明の疑問を見かけるけども、 何か他の人に聞きたければ目的を伝える。
目的がわからないと、上の質問パターンのYYYが全く的外れの場合何をやりたいのは分からない、 答えようにない質問になってしまう。
自分の目的が正しく伝わっているのならば、YYYが全く的外れでも他の方法を教えてくれる場合があるし、 その方法はあなたの目的からすると的外れであること、また効率が悪いことなどを教えてくれる場合がある。

理論的な興味ならば理論的な興味だと付け加える。その場合周辺情報を教えてもらえる場合がある。

正確な情報を伝える

処理系のバージョン情報、ライブラリのバージョン情報などを正確に伝える。
起きたことの自分の推測は、推測だということが分かるように書く。
事実と推測が混じった文章はひどく読みづらい。なるべく読む人の負荷を減らす。

最小ケースを見つける

基本的に動かないプログラムをそのまま渡して他人に直してもらうことは出来ない。
100行程度でも詳しい人は基本的には忙しいので全部読んでもらうような事は期待してはいけない。
必要なことはうまくいかない最初のケースを見つけること。

長くても20行程度に、出来れば3-5行程度で見れば分かるようにすることが大事だと思う。

適切な人に聞く

ツイッターならばエアリプよりも直接リプライを飛ばす。
(追記20151018)適切な人が誰だか分からないならば、SO英語版など人が集まる良い場所で質問する。
最近はOCamlでサーチしているコワイ人が親切に回答して回っているというのもあるけど……。

教えてくれる人のことを考える

全ての事に言えるのだけども、基本的には教えてくれる人のことを考える。
そのためなるべく手間を減らす努力をする。何回も足りない情報をやり取りするようなことが少なくなるようにする。
そうすると教えてもらえる率も高まる。あ、これ面倒そうだと思われると体感で回答率がぐっと下がる気がする。

感謝する

質問に答えてくれる人にはちゃんとお礼を言う。
何時間もデバッグに付き合ってくれる貴重な友人には酒を振る舞う。