プログラミング、フリーダイビング、ブロックチェーンのブログ

プログラミング道場

これからエンジニアを目指す人のために、私が書いた本です^^
この本は「Kindle Unlimited」の30日間無料体験で読むのがオススメです。



エンジニアは質問力を鍛えよう

更新日:

良いエンジニアになるためには、「良い質問」をするエンジニアになる必要があります。
でも、多くの日本人は「良い質問」をすることが苦手です。
なぜならば、学校教育では質問をする機会がほとんどなかったからです。
先生が作成した課題やテストには、必ず正しい回答とヒントが与えられています。
そのため、生徒が課題に対して質問をすることは全くありませんでした。

しかし社会人になると、「正しい回答がある課題(問題)」を出されることは、ほとんどありません。
反対に、「正しい回答がない課題」を解いていくことがほとんどです。
特にエンジニアの世界では、それが顕著です。
例えば、面接で以下のような課題を出されたとします。

「リストをソートするアルゴリズムを設計してください」

この時に、何も質問をせずに課題に取り掛かったら、その時点でマイナスです。
質問に取り掛かる前に、まずは曖昧さを排除するために、面接官に質問をしなければいけません。

  1. どんなリストのソートですか? 配列、連結リスト?
  2. 配列はどんなデータですか? 数値、文字、文字列?
  3. その数値は整数ですか?
  4. その数値はどこからくる値ですか? 何かのID? 何かの評価値?年齢?
  5. 数値のレコード数はいくつですか?

それに対する回答が以下のようなものだったとします。

  1. 配列
  2. 数値
  3. 整数
  4. 顧客の年齢
  5. 約100万

これだけの情報がわかれば、質問が以下のように具体的になります。
「0~130(合理的な最大年齢)の値を約100万個含む配列をソートする」

最初と最後で課題が全く違う!

  • リストをソートするアルゴリズムを設計
  • 0~130(合理的な年齢)の値を約100万個含む配列をソートするアルゴリズムを設計

他の例も考えてみます。

ある文字列が、すべてユニークである(重複する文字がない)かどうかを判定するアルゴリズムを実装してください。

この課題でも、先にいくつか質問しておくべきことがあります。

  • ASCIIコードのみなのか?それとも「あ」「い」「う」などの文字も含むのか?
  • ASCIIコードでも、大文字と小文字なのか、それとも小文字だけなのか?

回答

  • ASCIIコード
  • ASCIIコードのアルファベットの小文字のみ

これだけの情報がわかれば、質問が以下のように具体的になります。

ある文字列が、すべてユニークである(重複する文字がない)かどうかを判定するアルゴリズムを実装してください。
ただし、ある文字列に含まれる文字はa-zの36文字のみとする。

上記の2つの例を見てもらえばわかるように、「最初の課題」と「質問をした後の課題」では内容や解法が異なります。
「質問をした後の課題」の方が、より理想的に最適化された解答ができることは明白です。
ということは、「どれだけ良い質問をできるか?」ということが、理想的な解答に向かうため、さらには良いエンジニアへの道に繋がっているということがわかります。

良いエンジニアへの道

  1. 「最初の課題」と「質問をした後の課題」では、内容が異なる
  2. 「質問をした後の課題」の方が、最適化された解答を出しやすい
  3. 「良い質問」が最適化された解答への道
  4. 「良い質問をできるエンジニア」が良いエンジニア

この話は、なにもアルゴリズムを解く時に限った話ではありません。
要件定義をする時にも、質問力が大事になってきます。
何らかのアプリケーションを作成する時は、最低でもこれぐらいの質問をするべきです。

  • 対応するブラウザは?
  • モバイル対応は必要か?
  • 対応するモバイル端末は何か?
  • Webかアプリか?
  • アプリの場合は、iOSのOSバージョンいくつ以上に対応か?
  • アプリの場合は、AndroidのOSバージョンいくつ以上に対応か?
  • 想定されるユーザー数はどれぐらいか?
  • ピーク時に想定されるユーザー数はどれぐらいか?
  • AWSのようなクラウド環境を使っても大丈夫か?
  • ログの保存期間はどれぐらいか?
  • 認証はemailか電話番号か?
  • SQLインジェクション対策は必要か?(普通は必要)
  • XSS対策は必要か?(普通は必要)

世の中のアプリケーションを見ていると、こういった基本的な要件定義すらできていないアプリをちょくちょく目にします。
そのため、世の中にリリースされてからグダグダになるのでしょう。
そういったグダグダなアプリを作らないためにも、エンジニアの方は質問力を鍛えましょう^^

この記事は、この本の一部を参考にしました。

Good luck with your engineer life!

子供向けのプログラミングに関する本を知りたい人には、この記事がオススメです

子供向けにおすすめのプログラミングの本【2023年最新】

目次1 入門編2 初心者向け3 おまけ 入門編 ルビィのぼうけん こんにちは!プログラミング 世界の20か国以上で翻訳されたベストセラー本です。 フィンランドの女性プログラマであるリンダさんが、自分の子供のために作った絵本です。 そのせいか ...

続きを見る


プログラミングスクールに行きたい人には、この記事がオススメです

都道府県別のプログラミングスクール紹介【2022年最新】

目次1 プログラミング言語2 まとめ プログラミング言語 北海道 東北 関東 中部 近畿 中国 四国 九州 沖縄 まとめ この記事では、都道府県別にプログラミングスクールを紹介しました。 近くに行ってみたいスクールがあれば、是非、連絡をして ...

続きを見る

IT業界についてより詳しく勉強したい人には、この記事がオススメです

IT業界にいる人におすすめの本【2024年最新】

目次1 IT技術を使った会社の生存戦略2 プロジェクトマネジメント3 人事的なマネジメント4 働き方改革5 業界の雰囲気をなんとなく知りたい人 IT技術を使った会社の生存戦略 ソフトウェア・ファースト Sierを使った開発には限界がきており ...

続きを見る


Webデザインをより詳しく勉強したい人には、この記事がオススメです

Webデザインの学習でおすすめの本【2023年最新】

目次1 HTML/CSS2 UI3 UX4 Photoshop5 Illustrator6 デザイン基礎7 文字や余白8 配色 HTML/CSS 1冊ですべて身につくHTML & CSSとWebデザイン入門講座 初心者向けに説明され ...

続きを見る


各都道府県にあるプログラミングスクールを知りたい人には、この記事がオススメです

都道府県別のプログラミングスクール紹介【2022年最新】

目次1 プログラミング言語2 まとめ プログラミング言語 北海道 東北 関東 中部 近畿 中国 四国 九州 沖縄 まとめ この記事では、都道府県別にプログラミングスクールを紹介しました。 近くに行ってみたいスクールがあれば、是非、連絡をして ...

続きを見る

-IT業界, エンジニアの処世術, 初心者向け

Copyright© プログラミング道場 , 2024 All Rights Reserved Powered by AFFINGER4.