こんにちは、Blazej です。コーディング学習の旅の初めに、私は不正行為をしないと自分に誓いました。 不正行為とはどういう意味ですか? 演習問題を解くときは、自分のコードが機能するまでは解答を調べないと自分に誓いました。 Odinプロジェクトの選択 私が The Odin Project を選ぶことにしたのは、Udemy のコースや YouTube の動画に飽きていたからです。それらは決して悪くはなかったのですが、何の役にも立たないと感じていました。 各ビデオを 3 分間視聴しただけで集中するのが難しくなり、思考がさまよい始めました。しかし、これは別のブログ投稿のテーマです。 Odin プロジェクトに飛び込む Odin Project のカリキュラムは、ドキュメントを読んで演習を解き、プロジェクトを作成し、さらにドキュメントを読んで、さらに多くの演習を解き、さらに多くのプロジェクトを構築することに基づいています。ご想像のとおり、進むにつれて難易度が上がっていきます。 この点に到達するまではすべて順調でした。 回文とフィボナッチの挑戦 長い週末だったことを覚えています。4日間すべてを解くのに費やしました。最初の数回の演習は順調に進みましたが、回文(最終的には解けました)とフィボナッチで行き詰まりました。 ああ、そう... それはすごいですね。でも、上の写真にはそのような練習問題は載っていないですよね?はい、でも、上記のリポジトリに行くと、8番目と9番目の位置に載っています。 前回の練習問題を解くのに時間がかかりすぎて、どこで止めればいいのか分からなくなり、そのまま進み続けました。 フィボナッチとの闘い 私はお茶を飲みながら一生懸命考えていました。時間が経つにつれて、私の考えは「すべて簡単だから、やってみよう」から「何かが間違っているようだ、私の思考プロセスは正しいようだ、演習自体に間違いがあるに違いない。解決策を調べたほうがいいかもしれない」へと劇的に変化し始めました。 勉強するときは、 (25分集中して5分休憩する)を使います。 ポモドーロテクニック ポモドーロが通り過ぎて、なんとかフィボナッチ数列のようなものを得られるところまで到達しましたが、まだ何かが間違っているようでした。 誘惑の瞬間 この瞬間、私は「よし、ここまで来たんだ。後で何かわかるかもしれないから、解決策を見て、先に進むだけだ」と考えました。 私は思った通りにしました…もちろん、「ああ、それはとても簡単で、論理的に考え抜かれています。よし、次に進みましょう!」と思いました。 間違いに気づく フィボナッチの後には、オブジェクト演習を解く必要がありましたが、TOP のその時点ではまだオブジェクトを扱っていなかったので、私は混乱しました。 そして私は正しかったのです。間違ってレッスンを数レッスン先に進めてしまったのです... それは、カンニングをすることが正しいことであり、すぐに何か新しいことを学び、後でもっと簡単に解けるようになるだろうということを私に確信させただけです。ハハ! 回文とフィボナッチに戻る 約 1 週間かけて数回のレッスンを終え、私は回文とフィボナッチに戻りました。今回は少しストレスを感じましたが… 回文はスムーズに進み、私はフィボナッチを解くために座りました。ここで言及しなければならないのは、演習のファイルを開くと、もちろん解けていたため、コードをあまり見ないようにしたということです。 すべてをマークして削除しました。ただし、最初の行は次のとおりだったことを思い出しました。 let fib = []; 最後の闘い 私はそれを解き始めました。何もうまくいきませんでした。夕食を作って散歩に行くことにしました。コンピュータから離れるたびに、私の脳はフィボナッチに戻っていました。 頭の中で VSCode が動いているように感じました。エアフライヤーでフライドポテトが調理されているのを見る代わりに、フィボナッチ コードの行 (特にあのループと 'if' ステートメント) しか見えませんでした。 もちろん、おかしかったのは、何らかの解決策を想像していたものの、5 秒後には、すでにこれを試していたか、JavaScript がまったくそのようには動作しないことに気付いたことです。 画期的な瞬間 食事を済ませて散歩に出かけました。1 時間の散歩 = 1 時間の深い思考。メモに 3 つの新しい解決策を書き留めておき、それがうまくいくと 100% 確信していました。 どれがうまくいったと思いますか。はい、その通りです。どれもうまくいきませんでした。それでも同じ結果になりました。そのとき、配列に何かを追加することを考えました。 そこに何かが必要だということはわかっていました。しかし、私の脳の奥底では、「前に解いた演習を削除したとき、その配列は空だったのに」という反応が返ってきました。私はただ自分に嘘をついていたのです。 自分の信念を貫く 私はドキュメントやいくつかの記事を読み直しましたが、今回はズルをできないことはわかっていました。ズルをしても長期的には役に立たないことはすでにわかっていましたし、今ズルをしても後で同じ問題に直面するだけです。 3 時間が経過しました。もうイライラしていませんでした。この問題を解決したい、そして自分が何を間違っているのか理解したいと思いました。また、このループがどのように機能するかを知っているような気がしましたし、条件文を含むすべての構成をすでに試したように思えました。 助けを求める 私の頭に浮かんだ唯一の解決策は、Discord チャンネルで助けを求めることでした。 解決策と学んだ教訓 解決しました!!!! ほら、その配列に値を入れて、ループの前に条件文を引かなければなりませんでした。10時間以上前に私の脳が実際に私に伝えていたのはまさにそれでした。 しかし、解決策を少しは知っていたので、それは違うと思い込み、それをやらないように自分に嘘をつき続けました。うーん。 結論 この日に私が学んだ 2 つ目の教訓は、もちろん助けを求めることです。しかし、特に学習中の場合は、ドキュメントを読んですべてを自分で解決しようとするプロセスを経ることを強くお勧めします。 私はこのプロセスを通じて多くのことを学び、二度とこのような間違いを犯さないと信じています。 今では、別のエクササイズで別の壁にぶつかる準備がずっと整いました。今ではプロセスに慣れました!