私の最大の悩み
私は現在大学4年生で2024年4月からデータ分析の仕事に就く。
大学生活のみならず人生を通じてずっともやもやとした悩みを抱えてきた。
それは「物事が操れた感覚がない」ということである。
そしてそれは自分が一番手に入れたいものである。
kaggleとの出会い
情報系の学部に入り、大学3年生のときにkaggleを始めた。
大学までろくにパソコンも触ってこず、プログラミングも初めてだった私にとってkaggleは難しすぎた。
わからないことが多すぎてどこから手をつけていいか分からず、そのような体験は初めてであったため当然挫折した。
その後、本やインターネットでkaggleについて調べて再チャレンジし、なんとかコンペを完走できるようになった。
いつのまにかコピペエンジニアになっていた
やがて銅メダルが取れるようになってきたが、ふと思ったことがある。
私は本質的に理解していないのではないかと。
私のkaggleでの立ち回りはvoteの多いnotebookとdiscussionをひたすら読んで、良さそうな手法を実装していくという王道のものである。
それは銅・銀メダルを取りに行く戦略としては正しいだろうが、kaggleをやる本来の目的であるスキルアップには貢献するだろうか?
私はいちからbaselineとなるnotebookを自分で書けるだろうか?
何も見ずにEDAなどを正しく行えるだろうか?
答えは「ノー」である。
なぜなら私は他人のコードをcopyして使っていただけであって、スコアを上げることに囚われて、本質的な理解を放棄していたからである。
いわゆるコピペエンジニアになっていたのである。
世界一流エンジニアの思考法
これは有名な本だが最近になって初めて読んだ。
この本を超要約すると「理解が大切」ということである。
この本によると、物事ができるようになるには理解・記憶・反復が必要らしい。
料理で例えると以下のようになるだろう
-
理解(Understanding): レシピの理解
料理を作る際には、レシピを理解することが不可欠。各材料や手順が料理の成功にどのように寄与するかを理解することは、調理の基本。
例えば、なぜ特定の調味料や調理法が使われているのかを理解することで、料理のバランスや味わいをコントロールできる。
-
記憶(Memory): 材料と手順を覚えること
料理には多くの要素が絡んでいる。過去に作った料理の成功や失敗から学び、その経験を記憶することで、次の料理に活かすことができる。
-
反復(Repetition): 同じ料理を何度も作ること
料理のスキルを向上させるには、同じ料理を何度も作る必要がある。同じメニューを繰り返し作ることで、手順や調理時間を覚え、よりスムーズに料理することができる。
ここで、大切なのは記憶と反復は無意識下で行われるということ。
つまり、理解は意識的に行う必要があり、もっとも時間のかかる工程である。
理解とは
理解とは6つの側面から成り立つといわれている
1.説明できる
関係性に注目し、体系化された説明ができる
2.解釈できる
抽象的な理解を自分の話・作り話で具体化できる
3.応用できる
多様な文脈で応用できる
4.パースペクティブを持てる
批判的に複数の視点から考えられる
5.共感できる
経験とそれに伴う感情が大切である
6.自己認識
理解しようとしている自分に対する理解
このうちコーディングに必要なのは1・2・3だろう。
これらができれば、コードを理解している状態になると思われる。
具体的に何をするのか
1.複雑なコードを簡単なものに分解する
2.簡単なものを体系化されたもので学び・実装する
3.図や作り話を用いて説明する
4.再度組み立てる