LVLPATH

日本最強無料プログラミングスクール

問題解決能力を高める

問題解決能力を高める

🔰 概要

プログラミングを勉強したり、ソフトウェアエンジニアを仕事としてしていく場合、問題解決能力が必須になります。

問題解決能力というのは、「分からないことに対して自分で情報を集めて解決していく力」です。

プログラミングでは基本的に分からないことや要件に対してそれをどう実現するか不明なことなどが常に出てくるので、その部分を解決していくことが必要になります。

また、「問題解決能力」はソフトウェア開発などのプログラミング言語やフレームワークなどといったもののさらに深いコアなスキルになるので、無意識的に向上するものではありますが、意識的に思い出したいというのもあります。

✅ 問題解決能力を高めるには

image

1: AIの活用

ChatGPTやGitHub Copilotなど最近ではプログラミングやソフトウェア開発に限らず、何らかの問題に対しての解決策や提案をAIに入力すれば出力として答えやヒントが得られるケースが多いです。

AIに関しては以下の2つのコンテンツを参考にして日々使い倒していきましょう。

問題を解決する能力はAIを使って答えを得るというだけではなくて、AIを使ってインタラクティブに答えに近づいていくといったようなユースケースもあります。

2: 言語化するクセを作る

例1

  • Aという事柄が分からない
  • なぜ?
  • Aのデータの流れが分からないから
  • じゃあこのデータはどこから来てるんだ?
  • この関数はどこから呼ばれている?
  • 複数箇所見つかった
  • ここが該当する関数のルートの箇所っぽい
  • このルートの箇所は~~~というAPIのエンドポイントっぽい
  • フロントエンドの~~~というAPIのエンドポイントをコールしてる箇所はどこだ?

例2

  • ウェブアプリで会員登録機能を作りたいけど、実装方法が分からない
  • まずはAIに聞いてみて、提案をもらおう
  • (ChatGPTに聞く)
  • メール認証, OAuth認証などがあるっぽい
  • OAuthのGoogleの会員登録はReactでどう作るんだ?
  • (ChatGPTに聞く)
  • (Google検索で調べる)

以上のように、実際に分からない事柄に対して自分自身で言語化を行なって答えに近づいていくために、言語化することが非常に重要です。

「AのBという部分が分からない、ここのこういう部分が分からない」と言語化さえできてしまえば、あとはその方法を実際にAIやGoogle検索などを活用したり、該当するコードを調べたりすることで問題を解決していけます。

3: Google検索力

最近ではChatGPTやその他AIだけで十分に答えには辿り着けますが、いくつかの情報を比較検討する場合などには、Google検索が必要になるケースが多いです。

例えば、GoogleのOAuth認証を導入する場合、Google検索で調べることで、step by stepに実装する方法が複数のサイトの記事でヒットするので、それを読んで比較検討したり共通部分を抜き出してそれをベースに実装していくなどの方針を取ることができます。

実際、何かしらの実装をする際に簡単なハンズオン形式でかつ丁寧に解説してくれている記事は特に英語で多いので、Google検索で問題解決に必要な情報を集めて解決していくことも重要なスキルの1つです。

4: 情報収集力

情報収集力というのは、問題解決のために、AIやGoogle検索に限らずあらゆる情報源をインプットに加える力です。

例えば、メール機能に関するやや複雑なビジネスロジックがチーム内であった際に、そのビジネスロジックを理解するために、Slackのやり取りを参照したりGitHubのRepositoryのコードを参照したり、タスクの要件などを参照したり、といったように複数の箇所から情報を集めて問題解決に至ろうとするようなケースになります。

5: 推測力

例1

  • Aという箇所はもしかしたらBかCかDかもしれない
    • そのためには、ここらへんを調べれば良さそう
    • それがだめなら、ここ
    • もしそれでもだめなら、誰々さんに質問しよう

例2

  • 今のプログラミングの勉強のやり方があってるのか不安
    • 調べても情報が多すぎて何が何だか分からない
    • でも多分、おそらく、共通して言えるのは〜〜〜をして、日々やっていくなかで正解に近づいていけそう?な雰囲気はする(推測)
    • じゃあ、大体こんな感じの日々のスケジュールを組んで、こうやってやっていこう(推測に基づく決定)

雰囲気やフィーリングなどとも言えますが、「おそらくこんな感じっぽい」とざっくりと100⇒3ぐらいに絞り込んで詳細細部をデバッグしたり行動することで、より解像度を高めていくような作業がプログラミングやソフトウェア開発でも重要になります。

厳密には、ソフトウェアエンジニアとして必要な1つの能力になります。

この推測力を鍛えるには、日々の勉強や実装や生活から「ざーっと見た感じ(調べたりする感じ)、多分こうなんじゃね?」と仮説を言語化して持ってそこを検証していくことをやるのが有効なトレーニング方法になることが多いです。

仮説を持って検証していく抽象的な思考スキルには練度があります。

✅ 具体的なアクション

  • AIに聞く、調べる
  • 仮説を持って「こうなんじゃね?」というベースを作って、それを行動やインプットから検証していくマインドセットを持つ
お問い合わせ