Islands in the byte stream

Technical notes by a software engineer

新技術を学ぶ技術と三つの壁とDroidKaigi 2017

こないだの@onkさんのスライドがとても良かったんですよ。

短時間といいつつ守破離の「離」までいくのに3年かかるといってて、高速道路なんてものはないんだなということがわかりますね。

とはいえ自分自身に照らし合わせてみてもそのとおりだなと思いました。ぼくもAndroidで対外的にアウトプットできるようになるまで3年くらいかかってますし。まあ、ぼくは新技術を学ぶのはわりと苦手なほうではあるんですが。

で、スライドにはないけど新しい技術を学ぶ際には大きな壁がいくつかあるなとあると思ってます。それを 意識して 乗り越えるための指標としてもこのスライドはよさそうだなと。

ついでなのでちょっと ぼくの感じる 三大壁をまとめてみました。まあ、壁を壁と感じない人もいると思いますけどね!

Lv.1 着手の壁

症状:

  • 何の役に立つのかわからないので興味がわかない
    • たとえば同僚から「最近◯◯勉強してみてる」といわれてフ~ンと受け流している状態
  • 知らない概念・用語が多くて難しく着手できない

解決方法:

  • 詳しい人の話を聞く
  • 入門系記事をいくつか読んでとにかく用語や概念を頭になじませる

ぼくの例:

  • Androidの例だとSQLite, ContenProvider, RxJava, Fragmentあたりはこの壁を強く感じて着手するまでが大変だった
  • Elasticsearchは新概念が多くて最初は非常につらい

Lv.2 知った気になる壁

症状:

  • 関連情報を一通り読んでなんとなく知った気になり、何も作ってない状態で満足してしまう状態
  • 実際にはこのレベルのスキルはほとんど使い物にならないし、このレベルの技術を調子にのって批評してると的外れなことも多い(自戒をこめて)

解決方法:

  • 何か作る
  • OSSのコードを読んでコミットする(not just “fix a typo")

ぼくの例:

  • Androidだとマテリアルデザインの実装の詳細とかアニメーションまわりはこの壁を超えてない感覚がある
  • ほかは、たとえばちょっと学んだだけのプログラミング言語: C#, Go, Rust, Swift(3)あたりは明らかにこの壁を超えてない

Lv.3 雰囲気でやっているの壁

症状:

  • ある程度使えるようになって仕事でも使えているけど詳細は理解していない状態
  • 自分が書いたコードを説明できない
    • 理解せずにコードを書いている “オマジナイ” が多いときはこの壁の手前にいるということ

解決方法:

  • 疑問に思ったことやなんとなく理解しているだけのことをそのままにせず調べる
  • あとはひたすら読み書きして功夫(クンフー)を積むしかなさそう

ぼくの例:

  • AndroidだとRxJavaは「使えるようになった気がする」からの何かにハマって「全然理解してなかった…」というパターンが頻発するのでまだこの壁を超えられていないのかも
  • React, Elasticsearchなども一通り使えるようになったものの、まだ雰囲気でやっている感じ

この三つの壁を乗り越えると、やっと「使いこなしている」という感覚になります。

で、DroidKaigi 2017ですが、@onkさんのスライドにもあるとおり、コミュニティ主導のカンファレンスで知り合いを作るのは効率よく学ぶ環境作りためのいい機会です。

それと同時に、新しい技術に触れて第一の壁を突破する勢いを得たり、第二・第三の壁を突破してる人の話を聞いたり質問したりして自分のショートカットに役立てたりと、いろいろといい刺激を得られるのではないかと思います。2017年2月2日現在、まだチケットは70席ほど余っているので、刺激を得るために参加してみるのもいいんじゃないでしょうか。

なおぼくは二日目の朝10:40からAndroidのORMまわりの話をします!ぜひ聞きに来てください。