TechZine

現役エンジニアが勉強法・ライフハックを紹介。

【初心者向け】エンジニアが教える掲示板でのプログラミングの質問の仕方

プログラミング初心者だった頃、僕にはメンターがいました。 でも、忙しい人だったので、基本的には自分で調べて解決するようにしていました。

今回は、プログラミングを勉強し始めたばかりの方向けに、 ググっても解決しないプログラミング上の問題をどのようにネット上で解決するかについて書いてみたいと思います。

おすすめのエンジニア向けの質問サイト

利用したのは、主に次のエンジニア向けの質問サイトです。

ja.stackoverflow.com

teratail.com

そして、どちらも共通するのが

「下手な質問をするとボコボコにされる」

というところ。

どうボコボコにされるのかというと、質問評価点に「マイナス」がつけられてしまう。

知らないエンジニアに、「お前の質問はクソだ」と意思表示をされてしまうわけです。

▼評価マイナス3 f:id:beginner_engineer:20190502121026p:plain

▼評価マイナス2 f:id:beginner_engineer:20190502121121p:plain

特に、スタックオーバーフローに至っては、英語版で質問していたので、質問文の英語に添削が沢山付いたときは泣きそうになりました。

あんまりマイナスがついてしまうと、そもそも質問する権利がなくなり、投稿制限がかかってしまいます

というわけで、最初から「エンジニアはこういうふうに質問してくれると答えたくなるよ!」というフォーマットを把握しているに越したことはありません。

エンジニアが答えたくなるフォーマットとは?

質問サイトのフォーマットを確認しよう

これは、前述の質問サイト「テラテイル」のフォーマットです。

### 前提・実現したいこと

ここに質問の内容を詳しく書いてください。
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。

### 発生している問題・エラーメッセージ

 ```
エラーメッセージ
 ```

### 該当のソースコード

 ```ここに言語名を入力
ソースコード
 ` ``

### 試したこと

ここに問題に対して試したことを記載してください。

### 補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

基本的には、その質問サイトが用意するフォーマットに沿って、なるべく細かく書いてゆけばOKです。

利用してるプログラミング言語のバージョンや、フレームワークのバージョン、利用しているライブラリのバージョン一覧が記載されたソースコード、実行環境であるOSやブラウザなども記載できると良いでしょう。

なるべくスクリーンショットではなくコピペ可能な文字列で貼りましょう。

何が理想的な挙動で、どういう点で理想的な挙動と違ったのか書きましょう。

面倒でも、このフォーマットに沿って書いていると、不思議なことに投稿しなくても、大抵は自分で解決してしまうのです......。

ちゃんとシンタックスハイライトしよう

シンタックスハイライトとは、エディタの機能で、関数名と変数名を区別したりするといったような、「テキスト中の一部分をその分類ごとに異なる色やフォントで表示するもの」です。

プログラミング言語が読みにくかったら回答したくなくなります。

親切な回答者というのは、質問に記載されたコードをコピペして、自分の環境でエラーが再現できるかどうか実験してくれます。 投稿するときは、なるべく「コピペしてそのまま動く」コードにするようにしましょう。

↓ これ、いやですよね。インデントが消えているので、コピペして、自分のエディタに貼っても、そのままじゃ動かないし。

def function(foo): 
print(foo)

↓ これなら、一瞬で入ってきますね。

def function(foo):
    print(foo)

エンジニアの質問サイトの入力欄には、必ずシンタックスハイライト機能がありますから、それを利用してコードを記載するようにしましょう。 ちなみに、シンタックスハイライトする方法が分からなかったら、まずは「マークダウン記法」をググって覚えましょう。エンジニアなら120%利用するものです。

ちゃんと反応・評価しよう

当たり前のことではありますが、「追加で◯◯も教えてくれないと答えられません」的なコメントが来たらちゃんと追記しましょう。

そして、解決策をもらった場合は速やかにbest answerをクリックして、「解決済み」ステータスに変更することです。

スタックオーバーフローのような、ジョブボード一体型サービスでは、回答によって集めたポイントが、回答者のより良い就職に繋がるといったこともしばしば(というかそれを意図して設計されている。詳しくは https://stackoverflow.com/jobs)ので。

それでは、よりよいプログラミング学習ライフを!