◆はじめに
現時点での個人的な考えをまとめました。
あくまでも「未経験からのエンジニア学習」に絞ったものとして見てほしいです。
完全に主観で書いてます。色んな人の色んな意見があると思います。
僕自身、試行錯誤しながら学習しているので、これから考えが変わることも全然あると思います。
特に今年に入ってからの技術の進歩が早すぎるので、何が正しいかはどんどん変わっていってしまうという前提で書きます。
何かの参考にして頂ければ嬉しいです。
現時点で学習済みの分野は以下のとおりです
・コンピュータサイエンス基礎 → 基礎情報技術者試験の本を一読
・LINUX基礎 → 基本的なコマンドが使えるレベルまで
・Git,GitHub基礎 → GitHubの基本的な操作を一通り
・HTML,CSS基礎 → サイト模写ができるレベルまで
・JavaScript基礎 → フロント部分のインタラクティブな操作が実装できるレベルまで
・Ruby基礎 → BlackJackの課題を解くレベルまで
・RDB,SQL基礎 → SQL文からDB設計まで
・オブジェクト指向 → 本を1冊読了
・Webの仕組み → 本を1冊読了
・Rails → まだ学習途中
・API → まだ学習途中
総学習時間は4ヶ月で750時間ほどになります。
インフラ部分の学習やポートフォリオの作成はこれからになります。
チャットGPTにどっぷり浸かりながら学習してきました。
ちなみにエンジニア転職を目指し始めたのが今年の2月からですが、
それ以前のGoogle検索時代にも自作ツールを作ろうとしてプログラミングの学習をしていた経験があります。そことの比較で思うことも書いていきます。
記事の内容はチャットGPTに編集してもらいました。
◆分かったことや素直な感想
・学習の中の時間がかかる工程は、チャットGPTによる効率化が難しい
学習に時間を要する主な工程は4つ存在します。
①本を読み、知識を頭にインデックスする作業
②理解を深める作業
③つまづいた時にその理由をリサーチする作業
④コードの書き方に習熟する作業(アウトプット)
これらの中で、チャットGPTによって短縮できるのはおそらく②と③だと思います。
特に②と③の学習効率が大きく向上したことが、チャットGPTの大きなメリットとして挙げられます。
ただし、③については、フロントエンド部分の学習では画像をチャットGPTに入力できないため、学習効率が悪いと感じました。
一方、①と④を短縮するのは現時点では難しいと思われます。
※④については成果物を速く作るだけならGitHub Copilotが大いに役立ちますが、ここでの「習熟」とは、自力で思い出しながら書くことという意味で使っています。
・Google検索をほとんど行わなくなった
特定の技術をインストールする時や、環境構築をする際などにしか使用しなくなったと思います。
少なくとも「調べ物」目的としては、上記の場合以外ではほとんど使用していないと感じています。
・テラテイルでの質問もほとんど行わなくなった
Googleを使用していた時代には大変活用していましたが、今はほとんど使用していません。
(ちなみにヤフー知恵袋も全く使用しなくなりました)
・エンジニア学習に関しては、有料であろうとGPT-4を選ぶべきだと思います
例えるなら、優秀な家庭教師と平均的な家庭教師の違いと似ています。
GPT-4の方が家庭教師としてのスキルが高いと感じます。
つまづいているポイントを察する能力が高いというのが、実際に使ってみての感想です。
GPT-3.5はそこそこ嘘をつくので、もはやGPT-3.5に戻れないレベルで良いです。
もちろん、時と場合によってはGPT-3.5も適しているかもしれません。
・チャットGPTの時代に、「メモの必要性」について再考する必要があると感じました
メモを取る意義は多々ありますが、学習段階では「忘れた時に思い出すため」という意味で取っていることが多いです。
しかし、忘れてしまったことは再度チャットGPTに尋ねればよいので、これで十分だと感じています。
メモを取っても、その量が多いと、どこにメモをしたのかを探す時間がかかることがありました。この時間すらも短縮できます。
また、コーディングに必要なチートシートもすぐに作成してくれます。
一方で、コーディング中のコメントは絶対にメモしておくべきだと感じました。
まだ十分に理解していない分野の場合、コードを書いている途中で忘れることがしばしばありますので、コメントを必ず残すべきだと思います。
メモの必要性についてはまだ十分に検証していないため、自分の中で結論が出ていない状態です。
・「チャットGPTを使用すると自力で考える力が衰えるのでは?」という問いについて思うこと
これは使い方の問題ではないかと思います。
チャットGPTに依存して全ての答えを出してもらうような使い方をすれば、考える力は衰えると思いますが、理解を深めるために特定の課題に対して繰り返し問い合わせる使い方をすれば、学習効率を大幅に上げることができるでしょう。
それを繰り返すことで、設計などの複雑なタスクに対する思考力も養われると思います。
チャットGPTは考えるための材料も提供してくれます。
例えば「この問題に対してこのように考えているが、他にどのような考え方があるか教えて欲しい」というような指示を出せば、すぐに答えを出してくれます。
そうすれば、一つの事柄を様々な視点から考えることができます。これにより、より広範で深い考え方も可能になるでしょう。
また、「チャットGPTから最大限の成果を得るためには思考力が必要だ」とも感じています。
重要なのは「チャットGPTをどのように使って学習効率を上げるか?」ということを能動的に考え続け、思いついたことを試し続けることだと思います。
もちろん、それができる人は既に自力で考える力があるかもしれません。
要するに、使い方によると思います。
・「AIができることをわざわざ学習する必要があるのか?」という問いを色々な場面で考えました。
そのような意味で、学習に迷いが出る場面がいくつかありました。
将来を考えた時に、AIができる部分の学習は適度にしておき、効率良く学習を進めることは重要だと思います。
この見極めは非常に難しいと感じました。(実際、無理かもしれません)
極端な話、エンジニア自体がいつか必要なくなる(したがって学習自体が無意味)という見方もできますが、
短期から中期的にはまだエンジニアになることに価値があると考えていますので、見極めつつ進めていきたいと思います。
◆チャットGPTを使うことによるデメリットとして感じていること
・「本を読んで知識を蓄える作業」自体は短縮できません。
僕の場合は未経験からスタートしたので、学習の半分以上(体感的には8割を超えます)はこの作業を行っています。
コンピュータと違って人間の脳は、データをインストールするだけで記憶に蓄積されるわけではありません。
また、人間の脳は繰り返し学習しないと忘れてしまうため、復習が必要になります。
未経験からの学習だとこの工程が最終的に一番時間を要するため、学習全体から見た時にチャットGPTで短縮できる時間は、多くても2~3割くらいだと感じています。
これ自体はチャットGPTのデメリットではありませんが、期待していたほど大幅な学習効率の向上は見込めないという話ですね。
・躓いた時(エラーが出た時など)にコードを全文入力して「これどこがおかしい?」と尋ねると、大抵は解決してしまうため、自力で問題箇所を特定する力が育ちにくくなります。
躓く原因が自分の理解不足だったり、ただの凡ミスだったりするときがあり、後者の場合は、チャットGPTを使わないと無駄に時間が経過するだけです。
前者の場合は、チャットGPTに全てを任せずに自分で考えるべきだと思います(学習の観点から言えば)。
後者の場合、例えば「1時間調べた結果、ただのケアレスミスだった」というオチはよくありますので、それが1分くらいで終わることのメリットは大きいです。この場合は、問題解決のための探索時間を短縮できた方が良いです。
一番良いのは、問題を見極めてからチャットGPTに尋ねることですが、何かに躓いたときは、何に躓いているのかが分からないことが多いため、この見極めが難しいです。
さらに、「自力で問題箇所を特定する力」が今後必要なのかどうかも問題です。
「AIに全てを任せて解決してしまうなら、人間がやる必要はない」という考え方もあれば、
「チャットGPTを禁止している会社もあるから、自力でできないと駄目だ」という考え方もあります。
禁止している理由は、自社のコードの流出リスクを避けるためだと思いますが、長い目で見れば、人間がやるべきことは減っていくのではないかと思います。
ただ、直近の転職を考えると、この力は必要になるので、バランスを取るのが難しいです。
・「何が分からないかが分からない」段階で自分で調べたり考えたりする力は育ちにくくなったと感じます。
暗闇の中でもがく忍耐力のようなものが落ちているかもしれません。
これもGPTが解決してくれるので、ある意味、必要なくなっていく力とも言えます。
ただ、直近では会社で使用しているコードを入力できない場合など、自力で解決する必要がある状況もありますので、それを身に付ける必要があるとも思います。
・割と何でも即座に解決できてしまうので、壁にぶつかった時に強烈な記憶として残りにくいと感じます。
Google検索を使っていた頃は、何かに躓いたときに自力で調べまくって解決したときの記憶が強烈に残っていました。
しかし、学習の質(インパクト?)の面では、チャットGPTでの学習はそれほど強いとは感じていません。
その一方で、短期間でより多くのことを学べるメリットは計り知れません。
どちらが良いのかははっきりしません。
ちなみに、これは「チャットGPTを使った学習では、理解が浅い知識しか身につかない」ということではないと思います。
それが強烈な記憶として残るかどうかの問題で、チャットGPTで即座に解決した知識(理解したこと)は、定着しにくいのかもしれません。
・Github Copilotは優秀すぎるので、学習中は基本的に使わない方が良いと感じます。
Github Copilotについては、自力でアウトプットする前に答えを出してしまうため、正直言って学習中は邪魔になると思います。
特にまだ理解できていないコードを書く時は、使わない方が良いと思います。
一方、すでに理解しているコードを書く作業を助けてくれる点では役立ちます。
例えば、HTML・CSSの模写コーディングでは大いに役立ちました。
「既に知っていて理解しているコードを大量に書く」という作業が多い分野では、有用だと感じます。