その発想はなかった！新しい質問のしかたとチーム環境作り

分からない事を質問する時に躊躇した事はありませんか？
こんな事も分からないの？と怒られたらどうしようと思った事はありませんか？
結果、なかなか質問ができず時間だけが過ぎてしまって、
進捗が全然進まなかった事とかありませんか？

今日はそんな質問の仕方が苦手なあなたに、
上手に質問ができる考え方やチーム環境の作り方を紹介します。

自分はプログラム歴13年、フリーランス歴4年の[@望月](https://twitter.com/freemotio)と申します。

私も昔は質問できずに、悩んだ事がありました。
自分でもなんとか上手く質問できるように調べたり、努力、経験を重ね
いまでは克服する事ができています。

今回はなぜ質問に躊躇してしまうのかを明らかにして、
要因別に対応策を立てていきます。

この記事を最後まで見ると自信をもって質問する事ができます。

**「これ、何が分からないか、わからない状態なのですが？」キリッ！**

みたいにね。

参考：[質問は恥ではないし役に立つ](https://qiita.com/seki_uk/items/4001423b3cd3db0dada7)

## 目次

1.  質問を躊躇する要因  
  1.1. 心理的要因  
  1.2. 環境の要因  
  1.3. 無知の種類別要因
2. 質問テンプレート
3. 質問しやすい環境を作ろう
4. まとめ

## 1. 質問を躊躇する要因

![komatta_man2.png](https://qiita-image-store.s3.amazonaws.com/0/18377/e2ad5e04-1a8c-4e91-3362-cf444a69d421.png)


質問を躊躇するからには何か要因があるはずです。
この要因を分類して要因別の対応策を考えましょう。

### 1.1. 心理的要因
* 分からないことが知られてしまうのが怖い
* 怒られるのが怖い
* プライドが邪魔して聞けない

解決策：
これは失敗を恐れています。
新人エンジニアなので、知らないのは当たり前ですし、失敗しないと成長しません。
恐れずに質問しましょう。
それに人はそれほどあなたの無知レベルに関心を寄せません。おくせず質問しましょう。

### 1.2. 環境の要因

* 上司が苦手な人で毎回めんどくさそうに対応される
* こんなの調べてから質問しろよ。とか言われそう

解決策：
これは質問する前に、十分に自分でも調査したり事前準備をしてから質問しましょう。それでも不誠実な態度で対応される場合は貴方に原因があるのではなく、無能な上司側に原因があります。この場合は質問する相手を変えましょう。

### 1.3. 無知の種類別要因

* エラーログが表示しているが、調べてもわからなかった
* そもそもどう質問したらいいのかがわからない
* なにがなんだかまったく意味不明でだった

心理的要因、環境の要因を排除してからは、
この無知のレベルに応じた対応が必要になります。
心理的要因、環境の要因を排除する方法は後に記述します。

そして、実は無知には種類があります。

1. 全部分かっている
1. 分からないことが分かっている
1. 分からないことが分からない
1. 分からないことが分からない状況を何とかする術を知らない
1. 無知にレベルがあることを知らない

まず自分がどの状態にあるのか把握します。そしてステップ毎に対応策を考えます。  

### 分からないことが分かっている

例：エラーログが表示しているが、調べてもわからなかった

この状態のときは、何を質問すべきか理解できている状況です。
後に紹介する質問テンプレートを元に質問を組み立てます。  

### 分からないことが分からない

例：そもそもどう質問したらいいのかがわからない

この状態のときは、理解のある上司やチームの場合はそのまま以下のように質問します。

**「これ、何が分からないか、わからない状態なのですが？」キリッ！**

経験のあるプログラマーであれば、前段階に必要な情報や、それが分かるURLを教えてくれたりします。
実際このように質問するには前準備が必要になりますそれは[3. 質問しやすい環境を作ろう] で説明します。

### 分からないことが分からない状況を何とかする術を知らない

例：なにがなんだかまったく意味不明でだった

これは理解したい事のゴールがあまりにも遠すぎる状態なので、
上司やチームに相談して、手を付けられる所までタスク分割して貰いましょう。

**「これを作るためには、まず何から手をつけたらいいですか？」**

## 2. 質問テンプレート

質問する時の具体的な内容をどうしようか困る方の為にテンプレートを用意しました。
この型に当てはめて、丁寧な質問を作成すると自信を持て質問できます。
特に「分からないことが分かっている」状態のときにこのテンプレを使います。

```
主題：なにが分からないのかを主張

エラーログ：エラーログは解決の糸口ですあればコピペしましょう。

操作手順：実行したコマンド、流したテスト、操作した手順、を記述

質問前に調べた事：質問する前には自分で十分に調べましょう。
そしてその時の情報やこう思うのですが上手くいかないなど、
try&Errorをした事をアピールしましょう。
```

## 3. 質問しやすい環境を作ろう

![enjin_business.png](https://qiita-image-store.s3.amazonaws.com/0/18377/2d5837ae-7c30-2fb6-42e7-2b526c240115.png)



いままでは質問する側の対応策を述べてきました。
ここでは質問される側の受け入れ体制を整える事を提案します。

なぜ、新人や、無知な人の為にそんなことをしなきゃいけないんだ？
って思う方もいるかもしれませんが、悩んでる時間はチームにとって無駄であり、
撲滅するべき時間なのです。

質問のしやすいチームは生産性が高くなる傾向にあるので、ぜひ整えていきましょう。

やる事は簡単で、チームミーティングで、リーダーは以下のように宣言しましょう。

**「15分調べて分からない事は悩まずに質問するルールにしましょう！」キリッ！**

ルール化する事で、心理的要因と環境的要因を排除する事ができます。
残りは無知の種類別の要因のみが障害として残るので、
無知レベルに応じて３種類の質問形式で解決できることになります。

1. 「質問テンプレート」での質問
2. 「これ、何が分からないか、わからない状態なのですが？」キリッ！
3. 「これを作るためには、まず何から手をつけたらいいですか？」キリッ！

徹底したい場合は、**この３種類の質問方法で質問していいよと、
チームミーティングで共有するといいです。**  

特に新人プログラマーが陥りやすく、ハマると時間を無駄に消費してしまう
２と３の無知レベルを回避する事できます。

新人が「これ、何が分からないか、わからない状態なのですが？」って聞いても
怒られないんだと認識する事がチームにとって良い方向に進みます。

## 4. まとめ

以上、質問のしかたと質問がでやすいチームの作り方を紹介しました。

ここまで実践すると質問しやすいチームが構築できます。

この記事をミーティングの場に持ち出して、質問しやすいチームを構築してみてはいかがでしょうか？

[@クラウドランス望月](https://twitter.com/freemotio)の技術ブログ[【札幌のフリーランスブログ】](https://cloudlance-motio.work/)ではフリーランス界隈の情報や
最新のIT情報の発信していますので、よろしくお願いします。