圧倒亭グランパのブログ

圧倒的おじいちゃんを目指して

「好きな技術」がある時/ない時

 

「好きな技術はなんですか?」

 

こう聞かれた時、今の自分は真っ先に「crystal言語」と答えます。ですが、昔の自分は好きな技術を明確には持っていませんでした。この 好きな技術がある時/ない時 を振り返ってみると、いろいろと違うなと感じたのでまとめます。

目次

好きな技術がない時

好きな技術がない時を振り返ってみると、総じて 受け身 でした。

  • 「好きな技術は?」と聞かれても答えられない
  • ウォッチしている技術もなく、躓いた時に調べる程度
  • 「みんなやってるから」という理由で勉強会に参加
  • 周りと比べて自分だけ知らない技術は慌てて調べる
  • 「この本良いよ」という本は買うが、積ん読が増えていく

自発的な行動ではなく、周りが発端となって行動しています。この時を思い返してみると、「知りたいことが浅い」という印象があります。例えば、周りが参加しているから勉強会に出た、というケースの場合、本を読み進めたりチュートリアルを行ったりはしますが、それ以上の深掘りはしませんでした。特に深い興味はなく、「参加したらOK」「やることやったら終わり」「自分から情報を取りにいかない」、、、という状態です。これでもある程度の知識は身につきますが、その先の「より深く理解する」ところまでは達しませんでした。結果、応用が効かず、「受け身の勉強は身につきづらい」というイメージが強いです。

好きな技術がある時

crystal言語と出会いは、個人的には衝撃的でした。当時はrubyを書くのが楽しくて「あ、自分はrubyが好きだな」と感じつつありました。そんな時にcrystal言語と出会い、「なにこれ最強じゃないか(小並感)」と興味を持ったのがきっかけです。今思うと単純ですね。

そこからはもう情報を食い漁りました。crystalで検索した結果をひたすら読みました。実際にインストールして実行し、その速さに目を輝かせました。crystalについて他の人と話がしたくて、自ら勉強会も開催しました。

at-grandpa.hatenablog.jp

更には先日の技術書典で同人誌の一部も執筆しました。

現在は、crystalのライブラリを作ったり、疑問に思ったことについてissueを立てたり、ドキュメント整理のPRを送ったりしています。

この時の行動の特徴は、以下のようになります。

  • 自分から情報を取りに行く
  • 一次情報を真っ先に取りに行く
  • 以前よりも英語情報に挑むようになった
    • 知りたいことがそこに書かれているなら、読みたい/理解したい
    • とりあえず下手な英語でもいいから質問してみる
  • 知りたいことが無限に出てくる
  • 楽しく追える
    • 理解自体が楽しいので、先が無限でも嬉々として進める

前述の状態とはかなり違い、自分が主体になっています。この違いをまさに体感しています。そして、これによって嬉しい効果が二つありました。

 

嬉しい二つの効果

その二つの効果は以下です。

  • 周辺知識が自然とついてくる
  • 自分に「特定のイメージ」がつく

詳しく見ていきます。

周辺知識が自然とついてくる

先日、crystalのライブラリを作成しました。

at-grandpa.hatenablog.jp

このとき、あれこれ試行錯誤しつつ、いろんなことを考えました。テストの書き方はこうした方がいいな、travisの設定はこうするのか、もっと楽に開発したいからvimscript書こう、など、crystal以外の周辺知識にもどんどん触れていきました。また、crystal界隈の情報をウォッチするのが好きなので、ライブラリの更新リストを度々眺めています。

CrsytalShards - RECENTLY UPDATED

ここで graphql-crystal とうリポジトリを見つけ、「GraphQLってなんだ?」と興味が湧きました。

github.com

いろいろ調べてみた結果、GraphQLはRESTに変わる技術だと注目されているみたいです。興味を持ったので勉強会に参加してみました。

graphql-tokyo.doorkeeper.jp

海外では実用事例も出てきているのですが、日本ではまだまだその割合は低そうです。しかし、実際にアプリのAPIとして使用されている方も参加しておられ、興味深いお話を聞けました。今後もGraphQL周りはウォッチしていきたいですし、graphql-crystalリポジトリにも何か貢献できないかと考えています。

 

このように、技術というものは地続きになっており、ある一つの技術について疑問が浮かぶと他の技術を渡り歩くことになります。技術界隈では「T字型」という言葉がありますが、「漏斗型」のほうが近いのではないでしょうか。「一点を掘り進むと、周りも多少深くなる」というイメージです。そしてさらにその周辺知識から好きな技術見つけ、二つ目の穴を掘り進めるのです。

こうなると、エンジニアとしての幅が広がり始めるのではないかと思います。実際、こういった周辺知識が仕事に役立ったこともあります。そして何より、知識がつながっていくことが楽しいです。

 

自分に「特定のイメージ」がつく

先日の勉強会で、「あぁ!crystalの!」という会話が生まれたのは正直驚きでした。外部の勉強会でそういう機会が訪れるとは思っていませんでした。アウトプットは大事だなと改めて思いました。

おそらく、ある特定の技術を追っていなければ、このようなことは起こらなかったと思います。「◯◯さんは△△なイメージだ」となるとき、おそらくその人はその技術が大好きなんだと思います。(「◯◯さんはビールなイメージだ」というとき、おそらくその人はかなりのビール好きですよね。そんな感じだと思います。)

 

好きな技術を持つには

ここまでを振り返ると「好きな技術は持ったほうが良い」となりますが、好きな技術がない場合、どうやって持てばよいのでしょうか。

ここまでを読んで「好きな技術を探さなければ。。」と思っている方もいらっしゃるでしょう。しかしそれ自体、既に受け身になっているので、そうやって探した技術にはハマらないと思います。好きな技術は「探すもの」ではないと思います。では「出会うもの」と定義したらどうでしょうか。自分はこれも違うと思います。そう定義すると、こちらからは何もアクションできなくなってしまうからです。

自分の考える定義は「問うもの」です。

流行っている技術を好む人もいれば、逆に流行っていない技術を好む人もいます。枯れた技術を追う人もいれば、最新技術をいち早く極めようとする人もいます。いろんな人がいますが、自分が好きなものを知っているのは自分だけです。そこに他人を介入させる必要はありません。自分は一体どういった技術にテンションが上がるのか。スピード?マイナーな技術?最新技術?フロント?インフラ?尊敬する人が作っているもの?CLIツール?Webフレームワーク?などなどなど、切り口はたくさんあります。その中で自分はどれなのか。素直に自問してみることが大事だと思います。

自分の場合は運良く出会えた形なのですが、今思い返すと、

  • 現時点でマイナーな技術であること
  • rubyが少しわかってきたのでそれに付随する技術であること
  • 夢があること(処理が速い、型付きなど)

という項目にcrystalはドンピシャでした。一目惚れです。ありがとう crystal。

 

好きな技術が思い浮かばない時、まず第一歩として「テンション上がる時っていつだっけ?」と自問してみると、何かヒントが得られるかもしれません。

 

まとめ

好きな技術がある時とない時では、かなり世界が変わって見えるなぁというお話でした。そして、「好き」の種類は自分しかわからないので、周りは気にせず自問してみるのが良いと気付きました。

「最近テンション上がる技術に触れていないなー」と感じたら、今回の気付きをもう一度振り返って自問してみようと思います。

以上、そのためのメモでした。