Spinach Forest

May, 2015

/ 続・にわか Podcast ファン   / 異動ルールズ   / Hiccup, An Audio Player   / Communicate, Not Socialize   / ... 

続・にわか Podcast ファン

およそ1年半前から聞き始めたにわか podcast listening は継続中。

最近は多めに subscribe して面白そうなエピソードだけ聞くことにしている。 消化は炊事中とジムでのランニング中。ランニングは週に 4-5 回 30 分、炊事は週に数回各 30 分から1時間くらい。 時間予算が増えたのに加え全部聞くのを諦めたおかげで、聞く時間が足りないと感じることはなくなった。 むしろ炊事の手際をよくしたい・・・。

以下聞いているものたちを列挙。

Tech Podcasts

まず技術系から。前に書いた中でいまだ聞いているのは The ChangeLog くらい: 最近だと TypeScript の Anders Hejlsberg が登場する回は面白かった。IDE でコンパイラの書き方は変わったんだよ!という語りが熱い。ちょっと TypeScript のコードを読みたくなる。 ただ番組全体では Docker や Node などゴシップの渦中にいる関係者を呼んでコミュニティの話を聞き出すパターンが多い。やや食傷気味。 コードに踏み込んだ話をもっとして欲しい。

そういう意味で Software Engineering Radio は面白い: 最近人気急上昇中の Brendan Gregg なんかが登場する一方、このところ陰の薄い Eric Evansが最新回。この振れ幅たるや。昔からやっている番組なので、面白そうなバックナンバーを探す楽しみもある。Paxos の作者 Leslie Lamport の回は痺れたし、チューリング賞をとったデータベースマフィア Michael Stonebraker の回なんかも普通に勉強になる。

その出自ゆえ iOS を話題にした podcast はたくさんある一方、 Android の番組は少ない。それでも二つ聞いてる。 Android の中の人がやっている Android Developers Backstage (略して ADB) と、コミュニティ発の Fragmented 。ADB はもうちょっと録音をなんとかして欲しいけれど当事者だけあって趣深い内容。Fragmented はホストのパーソナリティが辛いと思っていたら回を追うごとだんだん良くなってきた。要素技術を扱うよりゲストを呼ぶエピソードがいい。頑張っている Android アプリ開発者の話を聞くのは励まされる。 iOS 系も一個くらい聞きたい気がする。なんかないかな。

たまに聞いている DevOps Cafe: 要素技術の話は全然せず、もっぱらおっさんが世間話をしている。 組織を変えなきゃダメなんだよドンッみたいなノリ。 Basho CTO Dave McCrory の登場するエピソードはよかった。データベース開発者ってテクノロジー厨二病みたいなのばっかりだとおもってたけれど、 商売の臭覚が鋭そうな人でした。

Codelunch.fm: 何度か聞いた。若々しさがよい。自分の好きなテクノロジを根拠なくしかし熱く語る様が楽しい。まわりに全然若者がいない身としては癒される。日本語。

Non-Tech Podcasts

バリエーションを求め、最近はプログラマ向け以外の番組も聞いている。

まず Startup: 第一シーズンを聴きそびれたと思っていた矢先、第二シーズンが始まった。Dating Ring という出会い系スタートアップを創業から追いかける体裁。このスタートアップ、女子大生(というのが差別的表現であることは承知しておりますが、そのゴシップ感が面白さの一部なので使ってます)が友達と勢いで創業した会社がなぜか Y Combinator のプログラムに採用され、けれど勝手が分からず四苦八苦。セクハラ投資家まで現れて・・・という展開。テレビドラマ Silicon Valley を見た時も思ったけれど、スタートアップ・ストーリーって学園スポーツマンガみたいな風情があるよね。努力友情勝利売却。

a16z Podcast: テック投資家の親玉格 Andreessen Horowitz が流行りのテクノロジやニュースについて識者に聞く番組。金の匂いが渦巻く今時のシリコンバレーっぽい内容。ずっとイノベーションイノベーション言ってて疲れる。大企業にいると平和ボケする気がして、キナ臭さに身を慣らそうとたまに聞いてる。ワナビー精神。

Upvoted: Reddit の中の人が最近話題になったスレの当事者を呼んで話をきく。にちゃんねるのよい話まとめブログみたいなもの。当事者が出てくるのがベタに面白い。Reddit はアメリカネットカルチャーの中でそれなりに存在感がある。そういうサブカル的感心もあって半分くらいは聞いてる。Huck という著名 vagabond (ホームレス旅人) のは特に面白く、雑誌記事も派生していた。

HBR IdeaCast: HBR だけにライフハック兼自己啓発みたいなもんです。その手の本の著者を呼んでつまみ食いする回が多い。 キリッとしたい朝にぽつぽつ聞く。

Longform: ノンフィクション作家など物書きを呼ぶ対談番組。Freakonomics の Stephen J. Dubner が出ているのに気づいてつまみ食いはじめた。まだどうこう言えるほど聞いてない。Stephen J. Dubner の回はおもしろかった。

NPR

ラジオ局 NPR の配信している番組たちに Podcast らしいライブ感はない。完成されたラジオ番組相当が降ってくる。 でもプロの仕事だけあってどれも完成度が高く面白い。滑舌もいい。

TED Radio Hour: 決まったテーマの TED のトークを毎回数本紹介し、ついでに講演者当人を呼んで話を聞く。量が多すぎて聞く気が起きない TED も選別されると悪くないなと見直す。ただこれを聞いて興味の湧いたトークを通しで聞くと特に面白くなかったりする。 編集に騙されてるかも。

Invisibilia: NHK のドキュメンタリーのいいやつに匹敵する出来。 ぶっちぎりで面白いっ・・・などと興奮したのも束の間、 あっという間に第一シーズンが終わってしまった。再開待ち中。聞くものがないときにバックナンバーを予習しておくとよいのではないでしょうか。この話をする相手がいなくて寂しい・・・。

こんなとこです。思ったより subscribe していた。

テックでない番組は PocketCast の Discovery タブから探したり、他の番組の中で流れる宣伝をきっかけに聞き始めたり。最近はニュースが聞きたいと思っているのだけれど、今の所うまく探せていない。

最近は聞きがてらシャドーイングしようと試している。声は出さず唇を動かすくらい。話の速さに一割もついていってないとおもうけれど、シャドーイングに集中すると時の流れが速くなり、ジムで走る退屈さが和らぐのはいい。語学トレーニングとしての効用は不明。

異動ルールズ

異動してみた。Chrome と関係ない Android アプリのチームへ。

モバイルに詳しくなろうと余暇にちまちまコードを書いてみたもののまったく捗らない。いっそ仕事にしてみようという次第。座席の引越しから数日、よろよろしながらもやっと初コミットできた。めでたい。

Work Rules という本がある。 Googleの人事(People Ops)のボスによる Google の本で、人事制度を中心に企業文化やシステムを紹介している。 いまいち時代背景が不透明な How Google Works と違い大企業としての Google をうまく描いている。興味深く読んだ。

中でも三つの論点が印象に残った。透明性、自由、そして管理職の権威を削ぐこと。異動の支度をしながら読むと説得力がある。一例として様子を書いてみたい。

Google のエンジニアリング部門は、たまの異動を薦めている。いろいろ経験してよいエンジニアになりなさいね、という意図だと思う。強制されるわけではない。同じ製品の仕事を続ける人も多い。一方で数年おきに居場所を変える人も少なくない。

透明性

社内には求人サイトがある。既存の製品からリリース前の秘密プロジェクトまで幅広く募集がある。面白そうなものをいくつかブックマークし、どれにしようと思いを馳せる。

ここで透明性が光る。

募集要項には一緒に働くであろうチームメイトのリストがついてくる。チームの規模や地理的な散らばり具合がわかるほか、社内名簿経由でレジュメを辿れば期待されるスキルセットも透けて見える。私は小さめのチームがよかったので、チームメイトの名前が長々と並ぶところはやめておいた。

大抵はプロジェクトのコードネームも載っている。秘密プロジェクトの求人は詳細をぼかし「メールで訊いてね」などと書いてあるが、コードネームで社内を検索するとあっさりプロジェクトのページ (Google Sites) がみつかったりする。リリース前の製品だと閲覧制限されていたりもするけれど、まあ半分以上の募集では何かしら見つかる。同様にチームメンバーの名前を検索すればメーリングリスト(Google Groups) のアーカイブにたどり着く。締め切り前にチームを励ますマネージャからのメールが目に止まる。いいマネージャだけど締め切りきついのはちょっとな・・・と思ったりする。

ページにはコードのビルド方法が書いてある。特殊なケースを除き、大半のコードは読める場所にある。チェックアウトすればコードの規模や好みがわかる。履歴から開発ペースもわかる。コミットログを集計してエースか誰が推し量ったりしてみる。名簿にない名前がログにあらわれ、誰かと思ったら少し前に異動でチームを離れた人だった・・・そんなこともわかる。

Googlegeist と呼ばれる社内サーベイの結果を公表しているチームもある。チーム外に公表するかどうかは当人たちの意向次第のため必ずしも気になる結果が見えるわけではない。私の異動先は結果を公表しており、スコアは良かった。このサーベイはけっこう素直に現状を描きだすと経験上知っているから、好スコアは不安を少し和らげてくれた。

知り合いの少ない自分にとって、この透明性は助けになる。

権威と自由

一通りのストーキングを済ませたら候補を絞り込む。もたつく間にいくつかの募集は姿を消していた。まだ生きている募集の窓口にメッセージを送る。該当チームの管理職から返事。どんな仕事があるのか話を聞いてごらんとメンバーを紹介される。ビデオ会議で話したり、ランチを食べつつ話を聞いたり。そのあとマネージャ当人とも話す。人事考課の過去ログを見せたりなんだりしたあと、大丈夫そうだから気が向いたら手続きしてねと連絡をもらう。

行き先の目処が立った。ここで上司に申し開く。もう C++ には飽きました。よそのチームで Java やります。などと伝える。おやおや、他の Chrome プロジェクトをやるってのはどう?そんな代案を丁重にお断りし、じゃあ仕方ないねと話は終わる。

異動手続きのサイトでフォームを埋め提出。値の張る買い物みたいな承認のワークフローが始まる。けれど承認チェーンに並ぶのは異動先のマネージャたち。自分の今の上司はいない。ある条件を満たした異動を、管理職が妨げることはできないという。次のリリースまで待ってくれと口を挟むくらいがせいぜいらしい。

私の場合はすでに話をつけてある。だから承認されない心配はない。社内の異動ガイドにもきちんと話を通せとある。けれど実はそもそも承認がいらなかったとは、少し驚く。

ここで渋られても困るから、的を射た設定だとは思う。これが管理職の権威を削ぐ構造の一部なのだろう。おかげで自分は労もなく好きにチームを移ることができる。特に気にしていなかった空気のようなこの自由はシステムのデザインだった。多少の誇張もあるにせよ、そんな面はたしかにある。まあ、伝え聞くところによるとアメリカのテック大企業はだいたい似たようなものらしいけれど。

これは良いデザインなのか?あてにしていたメンバーがあっさりいなくなってしまうこともありうる。大丈夫なのかしら。でも考えてみれば、無理に引き止めた相手は厭気が差し転職してしまうかもしれない。それなら異動くらいで済んだ方がよかろう。

大企業、巷でいうほど悪くないじゃん。勤務先を見直す一幕と一冊だった。

Hiccup, An Audio Player

ちまちまつくっていたアプリを公開してみる。Hiccup と命名。ローカルおよび Google Drive (Storage Access Framework に対応したサービス) から音声ファイルを選んで再生する。語学学習用で、再生中は画面全体が再生/一時停止/巻き戻し/早送りボタンになって細かい一時停止や巻き戻したりがラク、という意図。シャドーイングや日本語->英語が交互に使ってる教材を消化するのに自分ではぼちぼち使っている。

もうちょっとかっこよく、多機能で、かつ速くしてから公開したいと思っていたけれど、実力不足でコードがひどいかんじになってしまい Hello World に毛が生えたくらいで挫けた。ビギナーなので仕方なし。もうちょっと修行したら書き直したいかもしれない。

反省としては腰が引けて抽象化しすぎたり RxJava や DI を濫用したりでコードがまったく読めない代物になってしまったこと。あと単体テストが全然ないこと。もうちょっと抽象を薄くバリっと書きつつ必要な範囲でテストする、というのができるようになりたい。人に使ってもらえるものを作るまでの道のりは遠い。でも自分で使うものが作れるだけでもけっこう楽しい。作りたいものがさっと作れるようになりたいもんです。

コード: https://github.com/omo/hiccup

Communicate, Not Socialize

あるとき「エンジニアの仕事は設計をしたりコードを書いたり communicate をすることだ」と何かの資料に書かれているのを読み、胃が痛くなりかけた。そのあと「socialize は求められてない」と続くのを見て気を取り直す。仕事の外の付き合いは Communication じゃなくて Socializing か。なお “Socialization” は違う意味。

自分は言語障壁および性格のせいでチームでの振る舞いが socially awkward 側に倒れている。でも最低限の communication はこなしているせいか、大きく問題視されたことはない。めでた・・・くはないが、最悪の事態は免れた。「コミュ障」じゃなくて「ソシャ障」ってとこか。あるいは「非コミュ」じゃなくて「非ソシャ」。まあ自分に communication の問題がまったくないとは言わないけれど。

濫用されたカタカナのコミュニケーションのうち socializing をしない人。自分は人付き合いが苦手なおたくのステレオタイプが頭に浮かぶ。けれど件の資料に登場したのは小さな子供を持つ親だった。付き合いで飲みに行くより帰って子供の相手をしたい人たち。違う文書の似た文脈ではマイノリティの人種や性別も同じように描かれていた。文化的差異のため話が合わない人たち。

実際おたく的性癖が一大勢力たるエンジニアの世界で先のステレオタイプが不利にはたらくとは考えにくい。マイノリティかどうかは隣接する人々という分布のどこに位置するかで決まるわけだから。

誰であれ socialize しない自由があり、その選択が仕事で不利に働いてはいけない。となると「ソシャ障」や「非ソシャ」と呼ぶのも discrimination になりそう。ナシだな。訂正。

Socializing が職業人生に無関係とは思わない。たとえば networking は socializing の延長だろう。でも別のラベルがつけられて職務範囲から外されると少し気が楽になる。そして socializing を職務と切り離せるのは成熟の証かもしれない。「Cultural fit がない」と付き合いの悪い年寄りを追い出すスタートアップの話は、ときどき紙面をにぎわせている。


草稿にコメントをくれた @jmuk @kzys ありがとう。