🤣

TJのセッションだけはVimmer以外も聞いてくれ

2024/12/07に公開

誰向けの記事? 📃

  • 初学者~中級者
  • プログラミングを楽しむ気力が無くなった人

何の話?

VimConf 2024というVimの国際カンファレンスに参加したのですが、そのセッションの一つです
https://vimconf.org/2024/sessions/
これはエンジニアに通じる話で当日に感銘を受けたので共有します

TJって誰?

TJ DeVreis氏です 🐶
https://github.com/tjdevries

現在この界隈には大きく二つVimとNeovimが存在しており、TJはNeovimのコアコントリビューターです
https://neovim.io/
https://github.com/neovim/neovim

また、Neovimで有名なTelescope.nvimの作者でもあります🔭
https://github.com/nvim-telescope/telescope.nvim

まぁ、めちゃめちゃざっくり言えばすごい人です

彼はどんなセッションをしたの? 🗣️

タイトルは(Neo)Vim Made Me a Better Software Developerです
彼がNeovimというOSSでより良い開発者になった経緯を発表してくれました
この内容がとても素晴しかったです

結論を書いてしまえば
自分のプロジェクトをこねこねして試行錯誤すると、よりよいエンジニアになれるよ
って感じでした

エンジニアとは?

  • エンジニアはスプリントではなくマラソンであること
    • 一年に一日だけ猛特訓したとて上手くなるわけではない
    • 日々1%の改善が一年で大きな成果になる可能性
  • 個人で開発するための遊び場🛠️のような環境が必要
    • PDE(Personalized Development Environment)と名付けた🛠️

PDE(遊び場🛠️)の重要性とは?

彼は以下の説明をしてくれました

  • Product 📦
  • Customer 🛃
  • Release Cadence 👉
  • Iteration 🔄

Product 📦

自分の遊び場🛠️なら...

  • 理解しやすいし
  • 興味を持ちやすいし
  • 自分で評価しやすいし

Customer 🛃

自分の遊び場🛠️なら...

  • 確実にフィードバックを使用者(自分)からもらえるし

Release Cadence 👉

自分の遊び場🛠️なら...

  • リリースのペースを早くできるし
  • 互換性なんぞ気にせず新機能をつけやすいし

Iteration 🔄

自分の遊び場🛠️なら...

  • 仕事と違って何度も何度も試せるし

practice, practice, practice!!

その上で 練習しろ(practice) と提案をします

  • プログラミング👨‍💻の書き方を読んだだけ
    • ソフトウェアはうまく作れない
  • バスケ🏀のシュートについて書かれた本を読んだだけ
    • バスケットボールはうまくならない
  • この練習には遊び場🛠️が必要
    • アイデアを試す
    • それがどのように効果があるか確認する
    • そしてその経験を体で感じて実感すること

そして、実践として何ができるかを解説してくれました

  • Crearifying a Vision 📺
  • Debugging 🐞
  • Simplicity 🔲
  • Collaboration 👯
  • Communication 🙋‍♂️
  • Relationships 🤝🏻
  • Iteration speed 🚄

Crearifying a Vision 📺

  • アイデアを実際に実装すること
  • だいたい失敗する(仕事も)
  • 実装の方法が具体的になる

Debugging 🐞

  • バグを自分で見つけたり、解決すること
  • 他人のコードを読むことでアイデアになることもある

Simplicity 🔲

  • 問題を解決するために1000個のパッケージ入れるのか?
  • もしかしたらAPIをcurlするだけで解決する簡単な問題かもしれない
  • 依存関係を減らすことを意識する

Collaboration 👯

  • 様々な人と交流するチャンス
  • より良い発想を得るチャンス

Communication 🙋‍♂️

  • 自分のビジョンやアイデアを相手に伝える非同期コミュニケーションの練習ができる
  • 世界中の人々に伝わる文章を練習するチャンス

Relationships 🤝🏻

  • 長年の付き合いになる友人達ができた
  • プロジェクトがいかに小くともチャットなどで交流が続くこともある

Iteration speed 🚄

  • 自分のアイデアを早く終わらせたい
  • スピード感を持って改善していくこと
  • うまくいかない事を何度もトライして素早く改善する

さいごに

そして彼は最後に
「べつにVimじゃなくてもいいよ!」
ってオチで終ります
でも自分だけの遊び場🛠️を捜すんだ!

何に感動したか? 😭

単純に内容が良かった

上記で説明した内容がとても良かったです
この内容は実践できている人もいるかもしれませんが、ここまで言語化しているのは素晴らしいと感じました

また、彼はシンプルなスライドながら書いていないことを多く語りました

practiceのスライドで、同僚に「君はAPIを作るのが非常に上手だね」と言われたが、
その背景にはOSS活動で培われた経験あってこそだという話をしていました。

OSS活動を行なってきたおかげで他人に伝わるように、
ドキュメントを書かなければならないことを理解したとのこと

実績を持った人の発表であることに意味があった

OSSの開発者としても一定以上有名な彼が、面白おかしく発表してくれたことにとても意義を感じました
実は彼はYoutuberでもあるんですよね

https://youtube.com/@teej_dv?feature=shared

そして彼の動画はこれ
https://youtu.be/Mccy6wuq3JE?feature=shared
https://youtu.be/YsdlcQoHqPY?feature=shared
https://youtu.be/CuWfgiwI73Q?feature=shared

凄くふざけているように見えますよね
でも彼の実績、行動が共なっているのでバランスがとれていて、とても良いとおもいます
ポピュラーに動画を作るのは初心者にも優しいと私は思います

伝える能力がとても高かった

これが両立するのは凄いと驚愕しました
私の少いエンジニア人生でエンジニアは伝えることを疎かにしがちなイメージが強かったです

彼は身振り手振り、間(ま)やジョークなどか完璧でした
言語が解らずとも見ていられる、これは素晴らしいことです
また、聞いた話によると彼は事前に日本人には伝わらないジョークを削ったと聞いています

この伝える能力が我々が活かせる場は、以下のような状況が近いでしょうか

  • 非エンジニアへの顧客折衝
    • 直接画面に表示されないバックエンドの機能の重要性を説明する
  • 技術習熟度が違う相手
    • 初心者Javaプログラマーに継承やIFの説明をする場合

参考資料

動画:
https://youtu.be/5u604lTkGAY?si=7Vnmp2ZV1Cj1QjUo
登壇資料: How Neovim Made Me A Better Software Developer

おわりに

ですが、「なんだ、アドベントカレンダーか...」で読むの辞められたくなかったので終わりに書きました
会社のみなさん、いろいろすみません

とはいえ、この発表で私はとてもモチベーションが上がりました
私にとっては理想のエンジニア像の一つに見えました

  • ふざけているように見えて本質をつかんで、短く伝える
  • そして初心者へ説明しやすいようにする
  • 本質の説明をするので上級者には一定の需要がある

ここまで言語化してることにも感動しました
この記事で私のように感銘を受けたり、興味を持つきっかけになれば幸いです

私のような思想系は今回アドベントカレンダーでは少いかもしれませんが、折角モチベーションがあるので書きました
では、また

GMOメディアテックブログ

Discussion