🐾

好奇心と継続力で築く学習の自己哲学

2024/10/21に公開

この記事について

社内勉強会にて、「私の学習方法」というテーマでLTをした時の、発表内容を一部修正した資料です。
学習方法というより、「学習におけるモチベーションやマインド」を重点的に話しています。
(個人の主観 100%くらいの話にはなります。)

概要

  • 自分がエンジニアになった時からこれまでを振り返る
  • 学習とかの概念を何となく整理してみてそれらを自己哲学にする
  • 実際に自分の学習を振り返る

ところで、それは何のための学習?

  • 学習は手段で、本来は何かしらの目的がある
    • 評価 (≒成果)
      • 賞賛を受けたい
      • 自信を付けたい
      • スキルを付けたい
      • 給与を上げたい

無意識に考えている 「学習 → 成長 → 評価」 というサイクル

学習について考える前に: エンジニアを始めたきっかけを振り返ってみる

備考
2018年 社会人になり2,3ヶ月、セールスを経験する 適正がなかったようで、行き場を無くしてHR系 SaaSサービスの事業の立ち上げに関わる
2019年 パートナーのWebエンジニアとの出会い 当時 Railsエンジニアと毎週会う機会があり、彼らの凄さに圧倒され憧れから自分でWebサービスを開発できるようになりたいと思い始めるただ、ソースコードを見るだけでちょっと鳥肌が立つくらいだったので、エンジニア適正はなさそうではあった
2020年 受託のWeb制作会社で働く 未経験で入社だったので不安だらけだった。仕事できなさすぎてディレクターの上司にいっぱい怒られていた。(今は感謝している)またタスクをまともに終わらすことができず、忙しい先輩に巻き取ってもらっていた (申し訳なさがすごく無い自信を失いまくった)

心情の変化: 純粋な好奇心 → 評価(成果)を求めるようになった

  • 当初 “Webサービスを作れるようになりたい”想いから “エンジニアとして成長して評価されるようにならないといけない”にマインドが変わった気がしている

エンジニアとして評価 (成果) を上げたいでマインドで頑張ったらしんどくなった

  • 失敗して恥ずかしい思いをしたくない

  • 頼られるあの先輩のようになりたい

    • だから、こんなことも理解できない自分はダメだ
    • だから、実装で詰まってしまう自分はダメだ
    • だから、もっといいコードやいい設計で書けないとダメだ
    • だから、高いクオリティを出せないとダメだ
    • だから、苦手なことや知らないことは、ひたすらインプットを続けて、週末には技術ブログを書かないとダメだ
  • 評価(成果)に目線を向けすぎて、理想と現実のギャップにハマっていた

    • “評価を期待した学習”は理想と現実のギャップにハマりやすい

シグモイド成長曲線から見る学習におけるマインド

期待した未来からの逆算方式はあくまでロードマップ

  • 「1年後にこうなっていたいから今はこれをする」という目標を立てる上で良く使うアプローチであるがロードマップに過ぎないことを忘れてはならない

計画通り着実に成長するという銀の弾丸はない

  • 成長を実感できるまでに要する時間やキッカケは人によって異なる
  • 義務教育を6年間受けているが、自分は英語をほとんど話せないことが物語っている

対価として適切な評価(成果)を得られるは分からない

  • 自分が期待している成果・評価と得られたものが一致しないことがある

理想と現実のギャップにどう付き合うか

他人軸評価と自分軸評価を上手く切り分けて考える

  • もし他人と比較することが癖になっているのなら、他者比較を辞める
    • 単純に良いことがないから
  • 他人軸評価は単なる結果として受け止める
    • 否定でも批判でもない結果(そう見えているのかーくらいに留めておく)
    • 他人からの評価はほぼコントロール不可能
    • 期待に応えようとするのも、やりすぎ禁物
      • 永遠に終わらないマラソンに参加することになる
  • 以前の自分よりは良く出来ているからOKくらいのマインドでいた方がいい
    • 3ヶ月前 / 1年前のアウトプットを確認できるようにしておくと振り返って成長を実感しやすい
      • プログ記事,勉強会 / LT登壇,個人開発 …etc

1の好奇心を 2,3,4…10と育てていく

  • レゴ遊びやゲームのように無理に頑張らなくても、好奇心を持って出来ることに取り組む
    • 営業で成果が出せなかったが、エンジニアで4年間 働けている理由
      • めちゃくちゃ大変でも自分がやりたいことだったから
      • 好奇心を満たす → さらに学習する → 好奇心を満たす ループが楽しく感じたから

→ きっとやりたいことベースっていうのがめちゃ大事

アウトプットする理由もちゃんと再定義する

  • よく”インプットよりアウトプットをしよう”と言われるが、そもそもアウトプットする目的を再定義する
    • アウトプットしたら成長できる △
    • アウトプットを振り返った時に成長を実感できる ○

→ これらを学習における自己哲学として自分の中に構築した

自己哲学を元に学習と向き合う

哲学を固めただけで、自分が実践している学習方法に特別なことはない

  • いいコードや設計を学んだらNotionにメモする
  • 個人開発を少しずつ進めてみる
  • Zennなどに記事を執筆する
  • 社内勉強会で他の人に学んだことを伝える
  • ENGINEに登壇する

【振り返り例】4年前くらいにReactで作った個人開発のサービス

作ったもの概要

  • シャッフルランチのWebサービス
    • ログイン機能
    • ランチに誘うためのチャット機能
    • 周辺のランチ情報をサジェストしてくれてお店を探せる

何で作ったのかは覚えてないが成果物にするくらいなので作りたかったんだと思う
位置情報のAPIかなんかで店を出した気がするが単価高すぎじゃない?

位置情報のAPIかなんかで店を出した気がするが単価高すぎじゃない?

  • デザインはそれなりだけど設計は全然良くないし、コードも我ながら酷い
    • 当時の自分にはきっと精一杯だったはずだけど
      コードを一部抜粋

言いたいこといっぱいあった

  • 配列をfillterした後になんでmapしてシャローコピーしてるのか全然分からない
  • コールバックの変数名が適当すぎる
  • この手の関数は見通しと再利用面で別で切り出した方がいい
  • 同じ値を何回も使い回すなら、カリー化するとかも手だし
  • useContextでグローバルの値を習得したあとに、再度状態定義して、さらにそれ更新してるけど何のためにやったかコメント書いてくれ
  • useEffect内に書かれているFechAPI関数についてFetchAPIの中でストアへの値更新をやってるけど、がっつり副作用なのでそれも切り出そう
  • FechAPI関数内の処理は関数にする必要がないので、useEffectの中に書ける
  • FetchUserlistDataは例外処理を追加した上で戻り値を変数に代入してそれをセットしよう

時空を超えたセルフレビューで過去と今の差分を実感できた

おそらくこの実感が成長曲線の理想と現実のギャップを少しづつ埋めていく

過去の自分 現在の自分 差分の理由は?
・良いコードや設計が何だか分からない ・ある程度、”良いコード” の基準を持っていて言語化できる どうしたら良いコードが書けるんだろうかと試行錯誤している。
・JavaScriptやReactの仕様を理解していてない ・ある程度、JavaScriptやReactの仕様を理解していてユースケースに応じて使い分けることができる 日々少しづつ学習を続けた
・コードレビューの経験がほとんどない ・ある程度、コードレビューの経験があり具体的な指摘ができる レビューをする/される機会を増やした(トレーナー、レビュー会)

個人の音楽活動でも取り入れている

どんな活動をしているか

  • インストやヒップホップのビートやトラックを作っている
    • ビートメイカー,トラックメイカー,プロデューサーなどと言われているような活動スタイル

Spotify

Spotify
https://open.spotify.com/intl-ja/artist/3M6y9ALaNPQKQDAwqUlXOg?si=dMrblXk-RpaqbMP85HkgNA

以前の活動スタイルにどんな課題を感じていたのか

  • 1年で1本アルバムをリリースするくらいしか活動できておらず、音楽を作る時間やペースに大きなバラつきがあった
    • たまに他のビートメイカーを共作することはあるが、基本1人でやっているのでモチベが維持出来ない
    • 継続しないので引き出しも増えないし上手くならない (エンジニアリングでいう設計力や実装力に近い)
  • 作るけどあんまり自信がなく、リリースしない曲の割合が増えてしまいさらに億劫になる
  • リリースしても反応がなくてさらに取り組みづらくなる

今は2週間ごとにシングル(1曲)をリリースする取り組みをしている

  • 2週間に1曲リリースというサイクルは継続しやすく、アウトプットを定期的に振り返りやすい
  • 音楽を作って発表することを継続すると、常に好奇心が満たされ良いループを作りやすい
    • そもそも100点の音楽って何?という話でもあるので、自分の評価軸でリリースするかを決める
    • 別に反応がなかったとしても自分の好奇心を満たすループにいるので継続できる

それでも誰も聞いてくれないのではないか..とリリースを躊躇することもあったし、
1ヶ月に1曲作るのも無理だったが、今は自分の作品に拘りつつも、無理しないペースで音楽を作れるようになった。

まとめ

ぜひ皆さんも自分の学習哲学を見つけてみてください。

  • 学習には目的があるが、根本で大事なのは好奇心のループ(継続に繋がる)
  • 成長曲線(理想と現実のギャップ)を自己理解した上で、自分なりの付き合い方を定義する
  • アウトプットを振り返ることで成長曲線のギャップは埋まっていく

Discussion