AIで最適化するプログラミング学習法

## はじめに

新社会人の皆さん、パイセンな皆さんこんにちは。
早いもので4月も終わろうとしていますがいかがおすごしでしょうか？

プログラミング研修などされているかと思いますが捗っていますでしょうか？

余裕っす、全く分からない、とりあえずコピペで乗り切ったなどいろいろあるかと思いますが、GWを前に学習方法の最適化をAIさんと共にゆるっと考えてみようかとおもいます。

## 自分の状況を Claude さんと分析して最適化する

最適化の第一歩は自分の状況分析です。正しく自分の状況を把握することで今すべき最適な学習方法を考えることができます。

客観的に自分を見るというのはものすごく難しいことですが、[ChatGPT](https://chat.openai.com/) より賢いと噂のAIである [Calude](https://claude.ai/)さんとコンサル業界で大人気（？）の **「なぜなぜ分析」** をおこなうことで分析、最適化できそうです。

怖い上司とやるとメンタルをやられてしまうリスクがあると評判の「なぜなぜ分析」ですが、いつもフラットに接してくれるAIさんとやるのであれば気楽にできそうです。

自分の悩みやうまくいかないことを気軽に聞いてみて、最適な取り組みを考えてみましょう。

## 例）Xで流れてくる広告に釣られてIT業界にきたXくんの場合

X： **プログラミングを習得するのに向いてる人と向いてない人はいますか？**

(引用)Claude:
> はい、プログラミングを習得するのに向いている人と向いていない人がいると言えます。しかし、これは生まれ持った資質によるものだけではなく、性格や考え方、学習スタイルなども大きく関係してきます。
> 
> 【プログラミングに向いている人】
> 
> - 論理的思考力がある
> - 細かい作業を行う根気がある
> - 問題解決力と創造力がある
> - 新しいことを学ぶのが好き
> - 取り組む姿勢が真剣
> - 失敗を恐れずにチャレンジできる
> 
> このような資質や性格の人は、プログラミングの概念を理解しやすく、コードを書く作業にも向いている傾向にあります。
> 
> 【プログラミングに向いていない人】
> 
> - 論理的思考が得意ではない
> - 細かい作業が苦手
> - 考え方が硬直的
> - すぐに飽きてしまう
> - 間違えることを非常に恐れる
> 
> このような傾向の人は、プログラミングの学習が難しくなる可能性が高くなります。しかし、性格だけでなく、学習方法や環境次第でカバーできる部分もあります。
> 
> つまり、プログラミングに向いているかどうかは完全に決まっているわけではありません。興味と熱意、適切な学習方法さえあれば、誰もがプログラミングを身につけられる可能性はあります。自分に合ったスタイルを見つけ、コツコツと続けることが大切です。

なんとなく明確に向き不向きがあると言われてる気もするけど、 **興味と熱意があってコツコツ続けられれば** いいのか・・・でもなぁ、高い給料をくれて未経験者を歓迎してくれるというから就職しただけで興味も熱意もないんだよなぁ・・・

X: **興味と熱意がないと難しいですか？**

(引用)Claude:
> はい、興味と熱意がないとプログラミングを習得するのは非常に難しくなります。
> 
> プログラミングは抽象的な概念を理解し、論理的に考え、細かいミスに気をつける必要があるため、相当の集中力と忍耐力が求められます。興味と熱意がないと、そうした持続的な努力を継続することが困難になってしまいます。
> 
> 具体的には以下のような問題が起こりがちです:
> 
> - モチベーションが続かず、あきらめてしまう
> - つまずいたときに簡単にくじけてしまう 
> - 理解が浅く、本質が掴めない
> - 練習問題や実践に熱心に取り組めない
> - 新しい知識の吸収が困難になる
> 
> 一方、興味と熱意があれば、次のようなメリットがあります:
> 
> - 困難に遭遇してもそれを乗り越えようとする
> - 自発的に学習を継続できる
> - 質問をし、調べ物をして、積極的に学ぼうとする
> - 成果を出すことにより、さらに意欲が湧いてくる
> - 楽しみながら学習できるので、ストレスが少ない
> 
> プログラミングは決して簡単なスキルではありませんが、強い興味と熱意があれば、着実に上達することが可能です。逆に、無理してやる気のない状態で取り組むと、ますます苦手意識が高まってしまうリスクがあります。まずは興味を持つきっかけを見つけることが大切でしょう。

…これをパイセンに淡々と言われたら立ち直れなかった気がするな。

『興味を持つきっかけなんかないから聞いてみよう』…といった感じで押し問答を続けていけば、自分に最適な学習方法を見つけられると思います。
大事なのは、 **『自分で納得して継続できる学習方法』** が見つかるまで問いを繰り返すことかと思います。
AIの時間は人間の時間と異なり無限です。どんな質問をしても嫌な顔ひとつせずに無限に答えてくれます。

また、AI全般に言えることですが、ポジティブな正論で堂々巡りになることがあります。[^1]
その場合は、Claude との会話から出てきたキーワードを利用するなどして視点を変えた質問をしていくといいかもしれません。[^2]

例)

- プログラミングの抽象的な概念を理解する方法は？
- 理解が浅く、本質が掴めない時はどうしたらいいですか？
- 論理的思考力なにそれおいしいの？
- ゲーム的な学習アプリはありますか？
- 興味も熱意もありませんが、今すぐにプログラムが書けるようになりたいです。手っ取り早い方法はないですか？
- とりあえずの基礎だけ身につけるにはどのくらい時間がかかりますか？
- ３ヶ月やっても全く覚えられなかったら諦めた方がいいですか？
- プログラミングを覚えるのに必要な時間を確保できるとしたら、もっとお金が稼げる職業につくための勉強に使う方がいいですか？

## おわりに

AIと自分にあった学習方法考えていくという記事でした。
AIに質問をするためにも、自分を正しく分析して問を立てていく力は必要かもしれません。

以前は会社の人に相談する前には自問自答するかXなどにポストしてボコされるしかなかったのですが、親身ではないけれどもフラットに相談に乗ってくれるAIと相談できるという便利な世の中になりました。

これは、他人の手を借りずに **カイゼンできる** 機会が増えたとも言えますし、他人の手を借りずに **カイゼンしなければならない** 機会が増えたとも言えます。

最終的には、**プログラミングは自分自身の手元に残るスキル** なので自分自身で身につけていくしかない代わりに、キャリアを形成していく上で **自分自身の財産** として利用できるものかと思います。ただし、技術の進歩も激しいため、『一度身につけたら一生使えるもの』ではなく『コツコツ学習を続ける必要があるもの』ということにも留意が必要です。

自分自身のキャリアを形成する上でどのように役に立つかなども考えてみるとよいかもしれませんね。

## おまけ１（新卒エンジニア向け手紙）

https://qiita.com/kaku3/items/2c8d4d783be7ce4fc9ea

https://qiita.com/kaku3/items/0bf1703cb8d6f84afbc5

## おまけ２（新卒エンジニア向け記事）

https://qiita.com/kaku3/items/fb949aa1a53f1f71c796

https://qiita.com/kaku3/items/aa2f81cf1e3974b8ad3a

https://qiita.com/kaku3/items/937354cc180c8bee823b

https://qiita.com/kaku3/items/b1c94328f273c750286b

## おまけ３（パイセン向け記事）

https://qiita.com/kaku3/items/cafccb1ee631d9f61190

https://qiita.com/kaku3/items/422b5427024d29da6a6e

## おまけ４（...は難しいシリーズ）

https://qiita.com/kaku3/items/34b40446337a59213a75

https://qiita.com/kaku3/items/f8411523cce000de750e

https://qiita.com/kaku3/items/5b11d2e1aace73c36340

## おまけ５（営業A短編シリーズ）

https://qiita.com/kaku3/items/03aae7b9e3c70c55f513

https://qiita.com/kaku3/items/3378ea55b1240d7360a1

## おまけ６（エンジニアのためのお仕事問題集）

2030年にIT人材が最大79万人不足するとのことで、学習用の資料をgitで**無料**公開してます(不定期更新)。
よろしければどうぞ。

[エンジニアのためのお仕事問題集](https://github.com/kaku3/workbooks)

[^1]: Claude の方が ChatGPT よりはズバっと答えてくれる印象
[^2]: このまま続けるとAIの文章が大半を占めてしまい記事として成立しなくなるのでこの場には載せません。