GPT時代の初学者プログラマーに写経は必要か?という疑問

私がPHPを勉強し始めたとき、いろいろなサイトを見ながらひたすら写経(サンプルコードをコピペせずに手で打ち込むこと)していました。
14年ほど前ですが、当時も「写経は不要」「写経すると覚えが速い」といった情報が錯綜していました。

時は流れてGPTが登場し、仕様を具体的に言語化すればコードを出力してくれるようになりました。
すごいもので、画像をキャプチャして「こんな感じのページ作って」とお願いすれば割としっかり作り上げてくれます。

もしかして、写経したり基礎を学んだりする時間があるなら、GPTを使いこなせるようになった方がいいのでは?
そう疑問に思いました。

先に結論を書いておきます

「写経した方がいい」

異論はもちろんあると思いますし、向き不向きもあり、断言してしまうのはどうかと思いますので、こう言い換えておきます。

「言語の理解、最低でも基礎的なことは頭に入れておいた方がいい」

GPTに頼りきると何が起きるか

触ったことがない言語をGPTに頼むと、どんどん泥沼になっていきます。
これはガチです。

まず、人の書いたコードを読むのってすごくしんどいんですよね。
それがある程度習得している言語だったとしても本当にしんどいです。
それどころか、3日前に書いた自分のコードすら、解読するところから始まったりします。

ある程度使える言語でそれです。

もしこれが全く習得していない言語で、GPTにお願いだけして書いてもらった場合は、本当にえらいことになります。
極論ですが、どこでconsole.logを出せばいいのかすらわからなくなります。

1ファイルだけの短いスクリプトならまだ大丈夫でしょう。
しかし、複数のクラス、コンポーネント、関数がファイルをまたいで依存関係を持った時、GPTでは限界を迎えます。

こっちでは「test-page-ui」のような名前、あっちでは「ui-test-page」のような名前。
どっちがどっちで、どこに関連性があるのかわからなくなります。

また、先に開発者が「main-page」のような名前を設定していると、「ui-main-page」のように勝手にリネームされることがあります。
その結果、GPTにコード生成をお願いした後、別のスレッドで同じコードの修正をお願いすると、こういったことが発生します。

言語理解があると何が違うか

何が言いたいかというと、言語のことを理解していれば、GPTに出してもらったコードを完全にコピペすることはなく、一旦コードを確認します。

もしズボラしてコピペしても、何か不具合があればすぐにあたりをつけることができます。

言語に対しての理解が無いまま同じことをすると、何がダメなのか、なぜダメなのかわからないまま、意味不明なコードをもう一度GPTに渡してエラー解析してもらって出しなおしてもらって……という作業が始まります。

そうすると、どんどんコードに無駄な修正が入っていき、最終的にはシンプルな記述で済むコードが、無駄なコードで侵されていきます。

実際にハマった話(CSS地獄)

私がそうでした。

こっちのページは個別でデザインし、こっちのページでは共通のデザインと個別のデザインを当て、別のページでは共通のデザインを当てていると思ったら個別でデザインを当てていた、という感じでした。

CSSのクラス名も似たようなものが沢山あり、中身も似たようなものばかり。
さらに、個別で設定しているインラインのCSSが邪魔をして、どこに何が効いているのかすらわからない始末。

最終的に、一旦すべてのコンポーネントのCSSを初期化してやり直すという手戻りが発生しました。

写経していた言語、してこなかったCSS

私はHTML、PHP、JavaScriptは写経をして記述方法を覚えたり、開発の際に気を付ける点などを自分なりに学んでいました。

しかしCSSに関しては、ほぼほぼコピペ、もしくは既存のものを少し修正するぐらいのことしか行ってこず、どう注意すればいいか、設計方法はどうすればいいか、ということを学ばないままここまできてしまいました。

そもそもデザインが苦手で避けていたのもありますが、もっと関わっておくべきでした。

改めてCSSを見直したとき、ほとんどに!importantがついていて笑ってしまいました。

写経の本当の意味

私の場合は、写経することで、指で覚え、リズムで覚え、感覚をつかんでいました。

CSSはそれをしないまま通り過ぎてしまい、今まではそれが問題として表面化することはありませんでしたが、今回GPTを使って開発したことで露呈しました。

人によって合う方法は違う

写経じゃなくとも、自分が一番頭に入る方法ならそれでいいと思います。

私が一番モチベーションがあった時は、ノートにボールペンでコードを書いていました。
関数名は間違えていてもいいので、この構造なら動くかなとか、この順番ならどんな動きになるのかな、と考えながらやっていました。

人によって頭に入る方法は違うと思います。

ひたすら読むだけで頭に入る人もいれば、穴埋め問題にして手を動かす方が頭に入る人もいると思います。
中には、自分で覚えなくともGPTにお願いするだけで何の問題もなくやっていける、というニュータイプのような人もいると思います。
それならそれでいいと思います。(私もそうなりたい)

初学者の方へ

もしプログラマーとして初学者の方がこのページにたどり着いたのであれば、「写経って無駄なのかな」という流れの方が多いかと思います。

そうであれば、気にせずご自分の一番楽しい方法で言語に触れるのがいいと思います。

ただ、写すだけはつまらないかもしれないので、写したコードを壊して再構築しましょう。
いくつか写経したら、それらを組み合わせて何かを作ってみましょう。

すごく楽しいですよ、と自分にもう一度言い聞かせて、終わりにしたいと思います。

コメント

タイトルとURLをコピーしました