Joel Spolsky:より経験豊富なプログラマーに正しく質問する方法

FaddishとBrainwashing Usenet、Burning Man、Stack Overflowのルール


画像


Joel Spolsky、2018年4月

開発者の間で人気のバイクがあり、コードが機能しない場合は、ゴム製のアヒルを用意して、このコードがどのように機能するかを彼女に伝える必要があります。最後に出てきたものなどこのライフハックを自分でテストした開発者は、問題の詳細な議論の過程で、無生物がその解決策を見つけ出すことがよくあると主張しています。

これは、プログラミングプロセス中に自分で問題を解決するのに役立つトリックの1つです。別の方法は、「分割統治」ベースでプログラムデバッグ(デバッグ)する方法を学ぶことです。。 1つのエラーで数千行のコードを分割することはできません。ただし、コードを2つの部分に分割して、前半で何が起こり、後半で何が起こるかを確認できます。 5〜6回実行すると、エラーが発生します。

上記に基づいて、完璧な質問書くためのジョン・スキートのチェックリストを読むのは興味深いです。ジョンは尋ねます。「あなたが目にしている情報を見たことのない人にとって、その理解度と理解しやすさを評価するために、質問を注意深く読みましたか?」概して、これはゴム製のアヒルを使ったテストです。別のオプション:「質問にコードが含まれている場合、それを完全ではあるが短いプログラムに入力しましたか?」ショートプログラムに重点を置いているのは、実際には、「分割統治」しようとしたかどうかのテストです。

大まかに言えば、ジョンのチェックリストは、経験豊富なプログラマーがすでに試みたことを最初に試み、次に他の人に助けを求めることを提案しています。

残念ながら、誰もがこのチェックリストを聞いたことはありません。または多分彼は聞いたが、無視することを選んだ。その人はコードに問題があり、彼を助けることができるスタックオーバーフローの質問と回答のシステムがあることを知っており、質問をする方法についてオタクのプロトコルを読む時間がありません。

Stack Overflowが初心者からプログラミングへの質問を許可すべきかどうかについての議論がしばしばあります。

ジェフと私がシステムの初期設計について話し合ったとき、80年代にUsenetネットワークで人気があったCプログラミング言語に関するグループについて話しました。これはcomp.lang.cと呼ばれていました

Cはシンプルで限定的なプログラミング言語です。Cコンパイラは100Kbしか見つからないため、C専用のディスカッションを作成すると、会話のトピックがすぐに終了します。

後もう一つ。 90年代、Cはプログラミングに携わり始めたばかりの学生のための言語でした。そして、これらの同じ学生は、ほとんどの場合、Cで最も原始的な問題を抱えていました。。そして、彼らはすぐにcomp.lang.cの質問を実行しました。

そして老人たちはそこに退屈しました。非常に退屈。彼らは毎年9月にグループに入り、関数などから文字の配列を返すことができない理由を尋ねる学生の吐き気にうんざりしています。各。 9月。

これらの昔ながらの人たちは、FAQ(よくある質問)の概念も発明しました。したがって、彼らは「神のために、Usenetがすでに100回回答されているかどうかを尋ねるのはやめなさい」と言ったようです。必要ありませんでした。ニュースグループは、実際、約10年間ぶらぶらしていた少数の人々にしかサービスを提供しなかったため、衰退していました。

それがジェフと私が話したことです。初心者からの質問はどうしたらいいですか?
結局、新参者はそうするべきだと決定されました。 Stack Overflowには「単純すぎる」質問という概念はありません...しかし、それでも、他の人に助けを求める前に、まず自分で答えを見つけることが最善です。

「上級者」のプログラマーの中には、同じ簡単な質問を読むのが退屈だと感じる人がいることを理解しており、もはや私たちに連絡することはありません。それは大丈夫です-スタックオーバーフローは誰もが一生そこに座るように義務付けません。キャラクターのローカル配列が返されないという事実についての初心者の質問を読むのにうんざりしています(「それは私にとっては効果的です!」)。あなたが望むように、あなたの権利。

あなたがプログラミングに参加しているという事実は、あなたの質問がスタックオーバーフローに参加する場所がないという意味ではありません。具体的には「しかし、ロゴで亀を移動する方法は?」ウェブサイトのデザイナーが自宅で絶対的な初心者を見て喜んでいることを示すため。

しかし、いつものように、予期しない結果の法則によれば、この質問はほとんどスキャンダルを引き起こしました-その単純さのために、まったくと言っていいほどではありません。問題は、私がこの問題に悪意を持って対処したことです。ジェフ・アトウッドはこの点についてよく言った:「簡単な質問は悪くない。答えを見つける努力がないと悪いのです。」 (ああ、まあ、それ)。

初心者にとっては、質問をする前に記入する必要のあるポイントの数は不必要に思え、時には単に奇妙なこともあります。バーニングマンフェスティバルのようなものです。あなたは砂漠のどこかで焼夷弾パーティーに行くと思いますか、そして到着すると彼らはあなたの顔に約10の原則について叫びます、「根本的な自己表現」と同じように、したがって、皿を洗った後、乾いた湖からすべての水滴を集めて家に持ち帰る必要があります。各コミュニティには独自のルールがあり、最初は奇妙で楽しいように見えるかもしれません。あるいは、コードを機能させようとしているだけでは奇妙でおかしいです。

フェスティバルを成功させるバーニングマンのルールの多くは非常に抽象的なように見えますが、それは理にかなっています。砂漠でのフェスティバルを許可する米国土地管理局は、粘土質の土壌が吸収されないため、汚染された水を地面に注がないようにする必要があります。これは、微生物の成長と病気につながる可能性があります。訪問者が水を取り除かないと、お祭りはもう開催されないと言うには?

Stack Overflowでも同じです。あまりに抽象的な質問を公開することは許可されません(「プログラムの作成方法」)。私たちの一般的なルールは、次のとおりです。質問に対する答えが本全体のサイズである場合は、多すぎます。 「腎臓が痛いようです。それをカットする方法は?」そのような質問は、これを10年間行う方法を学んできた外科医にとっては不適切で不快なものに思えます。

私が気になるのは、多様性と包摂性に依存して新世代の開発者を教育しようとする際に、プログラミングを学びたい人々への障壁も築いているということです。実際、多くの点で、スタックオーバーフローの特定のルールは単なる障害です。しかし、さらに悪いのは、フォーラムへの新規参入者の無視と無礼です。

とても心配です。開発者として、あなたは未来のシナリオを作成する前例のない機会を持っています。そして、スタックオーバーフローが若いプログラマーの前に投げる制限は、彼らだけでなく、スタックオーバーフローシステム自体にも害を及ぼし、コミュニティの潜在的なメンバーを追い払っています。プログラミングには問題がないわけではありません。私たちの目標は、それをより簡単にすることです。

来年はこの分野で一生懸命取り組むつもりです。他の人を変えたり、優しくしたりすることはできません。しかし、人々がより文化的になるよう動機づけるStack Overflowユーザーインターフェイスのいくつかの側面を改善できると思います。たとえば、「質問する」ページのプロンプトを微調整したり、反応のあるモデレートに取り組んだりして、コミュニティメンバー自身が失礼なコメントにフラグを付けて不満を言うことができるようにします。

また、新しい機能の開発にも取り組んでいます。この機能を使用すると、ご自身のチームの小さなグループに質問を送信できます。これにより、おそらく巨大な大都市、つまりスタックオーバーフローに特定の友好的な雰囲気を作るのに役立ちます。

Stack Overflowをより快適にするために努力しているという事実にもかかわらず、私たちの主な目標は、常にプログラム開発者のために世界で最高のリソースを作成することでした。

平均的な静的プログラマーは私たちに340回電話をかけます。それが私たちの強みです。プログラムの作成に関する情報源は他にもありますが、開発者が非常に信頼し、注意する必要があるサイトは1つだけです。これは、プログラマにとって議会図書館のようなものです。



画像
SkillFactoryのオンラインコースを受講して、スキルと給与の需要の高い職業をゼロから習得する方法の詳細をご覧ください。



続きを読む



All Articles