2016年12月19日月曜日

優秀なエンジニアになる方法

最近、私なりに優秀なエンジニアになる方法がみえてきた。
優秀なエンジニアといってもレベルはいろいろあるけれど、ここでは、仕事をする中で、複数の人から「あの人は優秀」と言ってもらえるという基準で考えてほしい。

どれも、普通のことだけど、この普通のことを続けるかどうかで大きな差が生まれるのだと思う。
大切なプロジェクトから去るにあたり、後を任せる若い2人に向けてこの気づきをシェアしておく。

技術書を読む


昔、先輩にこんなことを言われたことがあった。

気になった本があったらすぐ買え。
積読でもいい、わからなくてもいい、はずれでもいい。
後から役に立つものもあるし、ずっと役に立たないものもある。
それでも気にせず、気になった本があったらすぐ買え。 

結局、本が一番学習のコスパがいい。
若くてお金がないうちは、ハズレの本を買ってしまうと損をしたと思ってしまうかもしれないけれど、トータルで考えると決して損をすることはない。

勉強会にでる


勉強会にでるだけで優秀になるということはない。
勉強会のよいところは、新しい技術のキーワードをひろえたり、ファーストステップを楽しくクリアできることと、社外の優秀なエンジニアとのネットワークが築けることだ。
単純に、楽しいのでモチベーションがあがるという効果もある。

知識があまりないうちは、有名そうな勉強会やカンファレンスにでてキーワードを拾ってくるだけでいい。
ハンズオン勉強会があれば、積極的にでるといい。
新しい技術を学ぶときは、ハンズオン勉強会にでると、変なところでつまずいて嫌にならないのでとてもおすすめだ。
まずは、勉強会の情報をチェックできるようにすることだ(dots.とかを使って)。

実際にサービスやツールをつくってみる


学んだことを活かして、小さくてもいいから、サービスやツールを自分でつくってみると、世界が広がる。
何をつくっていいのかわからないのなら、ハッカソンにでてみるのがおすすめだ。
初心者歓迎のハッカソン(はじめてのハッカソンとか)もあるので、臆せずに飛び込むといい。

自分で何か思いついたら、大したものでなくても、似たようなものがあっても、気にせずにとにかくつくってみる。
学習という意味では、車輪の再発明は決して悪くない。
必ず得るものがある。

コミュニティにとびこんでみる(ウィークタイズ)


興味をもって学んでいくと、気になるコミュニティがでてくる。
そのときは、自分の実力なんて気にせずにとにかくドアをノックしよう。
多くの場合、優しく受け入れてくれるし、強く束縛されることもない。
最近では、こういった弱い結びつき(ウィークタイズ)がとても重要だということがわかってきているらしい。

ワークライフシナジー


そんなことをやっていると、ただでさえ忙しいのにプライベートの時間がなくなってしまう。
ワークライフバランスといって、ワークとライフを分けてバランスをとるのはエンジニアには難しい。
その代わり、エンジニアはワークライフシナジーをしやすい。
今やITはライフと密着しているので、エンジニアとして成長すると、ハッカソンにでてライフを楽しくするアプリをつくったり、自分で自分の趣味に役立つアプリをつくったりできる。
ワークでもない、ライフでもない、ワークとライフが混ざりあった領域をつくって楽しめるエンジニアになるのが一番だと思う。

2016年9月4日日曜日

「HTML5 Conference」に参加しました


カンファレンスに参加しただけで新しい知識や技術が身についたなんてことはないけれど、新しい技術のキーワードがインプットできて、色々な刺激を受けることができました。
講演資料を探していたら、まとめを発見。

http://qiita.com/hidenorly/items/40ac3e9dbf757ce4df52

私が参加したのは次のセッション。

Reactの最新動向とベストプラクティス
小林徹(株式会社TOLOT)

丁寧に説明という感じではなく、キーワードと簡単な説明だけで歴史や特徴から最新動向まで幅広にという感じでした。
基礎については、これまで何となくわかっていたことを体系的に説明してもらえたので、自分の頭の中が整理されました。
知らなかったことは、聞いてもよくわからなかったけど、キーワードはインプットできました。

講演資料
https://speakerdeck.com/koba04/reactfalsezui-xin-dong-xiang-tobesutopurakuteisu

AudioとガジェットをWebで遊ぶ
河合良哉(Yamaha Corporation of America)

普通に音の再生や録音をする話なのかと思っていたら、シンセサイザー的なことが比較的に簡単にできるという、もっと面白い話でした。
また、音楽だけでなく、Bluetoothの話もあって飽きさせない。
自分としては、実際に使うシーンは浮かばないけど、簡単にシンセサイザーみたいなことができて、とてもおもしろかった。

講演資料
https://ryoyakawai.github.io/html5conference2016/index.html

Material Design を使ったマルチデバイスに対応するデザインの作り方
鈴木 拓生(Google)

Material Designの基本的な考え方から、フレームワーク、ツールまでの一通りをわかりやすく解説してくれました。
ご本人もおっしゃっていたとおり、内容は[Google Design](https://design.google.com/)に全てあるし、基本なんだけど、対面で説明してもらえると腹落ち具合が違う。
もしかしたら勘違いなのかもしれないけど、少なくともやってみようというモチベーションはサイトをみるよりも圧倒的。
とてもよいセッションでした。

Webアプリケーションにおける機械学習活用の基礎
中井 悦司(Google)

Linuxで有名な中井さんがなんと2年前に機械学習に興味を持ち、今はGoogleにいらっしゃるとのこと。
できる人は何をやってもできてしまうのか。。。
データを2種類にわけるような基本的な機械学習の原理から、顔認識の方法まで解説されました。
手書きの数字の認識の機械学習の説明を交えたデモが面白く、機械学習に非常に興味が持てました。
tensor flowについては結局よくわからなかったので、紹介された本をポチりました。
おまけのGoogleの顔認識APIはすぐにでも使えそう。

講演資料
http://pt.slideshare.net/enakai/web-65150969

Progressive Web Apps の導入基礎
片山 雄介(株式会社リクルート住まいカンパニー)

PWAってWebアプリでもネイティブアプリのレベルのUXにというくらいでしか理解できていなくて、実際に使う事例はとてもためになった。
もう、すぐにでも使いたい!
紹介されたSumoで使っている機能の事例は次の3つ。

  • Add to Home Screen
  • Push Notification
  • Offline Cache

特に3つめがメインで、次のような紹介がありました。

オフラインクックブック

※オフラインでWebアプリを使う際のベストプラクティス

App Shellアーキテクチャ

※テンプレートは全てキャッシュして、データだけネットワークにとりにいくアーキテクチャ