A Million Hello Worlds

テクノロジの流行をファッションに例えて揶揄することがある。新しいテクノロジを追いかけてばかりいるプログラマを非難し、勉強会もいいけど問題解決に頭を使えという。

ファッショナブルなプログラマを責めるのは、衣服や装飾品で散財する人を無駄遣いせず金を貯めろと責めるのに似ている。ユニクロ・無印・(その他無難なブランド)でいいじゃん、それより体でも鍛えなよ、なんて説教するかんじ。一理ある。でも話が通じる気はしない。

おしゃれ貧乏はさておき、人々はなぜ身だしなみに気を使うのだろう。周りと同じがいいなんて消極的な理由もあろう。特定の文化的集団、サブカルチャーに参加するためかもしれない。反対に人と同じが嫌だからかもしれなければ流行りに詳しいところを見せたいからかもしれず、単に目立ちたいからかもしれない。演出したい自己像を求める人もいれば洋服マニアもいる。防寒や衛生や法令遵守だけが衣類への期待とは限らない。身だしなみは社会的なシグナルでもある。

テクノロジにも似たところがある。モバイルファーストに沸く社内で波風を立てまいと Java や Swift に手を染め、インフラを支える分散システムハッカーに憧れて Go で書いたサーバを EC2 に載せ、オブジェクト指向だドメイン駆動だと煩いおっさんになりたくないと Haskell や VHDL の門を叩き、IoT で一目置かれようと Arduino や Spark をいじり、腕自慢に OS や言語処理系を書いてみる。

どれも何らかの社会的な欲求を含んでいる。欲求や下心が時に私たちをテクノロジーへと差し向ける。「成長」「問題解決」「雇用」「人類の叡智」みたいな肩肘張った動機だけが人を動かすわけじゃない。

プログラマを動かす社会的な欲求は様々だろう。中でもわかりやすいのは二つ。一つ目は「居場所探し。」趣味のあう友達をみつけたい、話し相手、仲間が欲しい。二つ目は「自分探し。」難しいアルゴリズムをそらで書けるハッカーになりたい。オープンソース・コミッタになりたい。誰かに認められたい。

程度に個人差はあれ、これらは伝統的であると同時に現代的な欲求でもある。プログラマに限らず、昔から専門職は同業者のコミュニティにアイデンティティを預けてきた。(1, 2) そこにインターネットが拍車をかけた。オープンソース・プロジェクトからユーザグループまで、今や居場所に不足はない。GitHub に競技プログラミングと、腕を問う機会も溢れている。

原動力の内訳

社会的欲求、肩肘張った動機。これらは互いに繋がりあっている。自分を認めてもらうには相手がいる。問題を解決すれば相手から関心を集められる。その過程で人は成長する。仲間を通じて職が見つかる。仕事を通じて真実を垣間見る。隣り合う動機や欲求は切り離せない。一方で自分を動かす原動力の内訳に目を向けてわかることもある。社会的な切望と肩肘の緊張を読み違えると空回りする。

ある最新テクノロジに強い魅力を感じたとする。たとえばプログラミング言語。型システムがすごい、文法が練られている、最新超絶技巧 MonadJIT で速い - でも正直、説明は難しくてよくわからない。触ってもピンとこない。でも俺これすごいと思うんだよ!一緒にやろうぜイソノ!!衝動が自分を駆り立てる。

けれどこの強い気持ちは、本当にテクノロジそれ自体から来たのだろうか。テクノロジを使っているのが景気のいいスタートアップだった、尊敬するプログラマが Twitter でウェブスケールと騒いでいた、そんな憧れや羨望に根ざしてはいないか。憧れも羨望も悪くない。でも気持ちの出処に気づかないままテクノロジにのめりこむと、彼らが飽きて別の何かを触りだした途端に裏切られたと気を落とし、貴重なやる気を損ないかねない。それよりもヒップなスタートアップに乗り込む手管、憧れを追う道の一つとしてテクノロジに取り組む方がいい。浅はかに見えるかも知れない。でも歪みがなく努力と成果が噛み合いやすい。

別のよくある話。野心的な未完成テクノロジの愛好家がいる。プロジェクトの挑戦的な目標に賛否が渦巻くなか真っ先に飛びつく人々。社会的欲求のメガネを通すと、ここには二通りの自分探し、居場所探しがいる。まずは命知らずのリスクテイカー。今から手をつけて、テクノロジが化けたとき先頭に立ちたい。もう一つは自分だけがその良さをわかっていると思いたいサブカル知識人。同好の士がつくる小さな輪の中で知る人ぞ知る喜びに浸る。

未完成テクノロジには夢があるから識者と話すのは楽しい。けれど中には無自覚に地雷を売りつけたりジャーゴンに酔うばかりの人もいる。参照透過な FPGA だからデータレイクのフリートでも楽勝なんですよ。まあちょっと専門的だし iOS9 beta2 以降しか対応してないので森田さんには無理ですかね・・・なんて言う人とにこやかに付き合うには厚い教科書より社会的欲求を読み解きたい。

こうしたステレオタイプに限らず、プログラマの世界でおこる突飛な出来事の多くには社会的欲求の影がちらついている。

目移りの時代

社会的欲求は自分を動かす活力にもなるが、煩わしさもある。

テクノロジの移り変わる速さに焦る気持ちのいくらかは、自分の居場所や立場を持たない不安に根ざしている。居場所と立ち位置が定まると不安は和らぐ。少し距離を置き、本来の目的、たとえば問題解決のためにテクノロジと向き合う余裕が生まれる。だからさっさと居場所を見つけて頑張ろう。そのためには・・・

そのためにはどうすればいいのだろうね。色とりどりのテクノロジに目移りし、腰を据えられない現実がある。

以前 A Million First Dates という記事を見かけた。アメリカの出会い系サービスが社会に与えつつある影響を綴った読み物で、同名書籍からの抜粋。著者によると、出会い系サービスの登場によって相手探しが楽になった結果、逆に誰か一人に覚悟を決められない現象が起きているという。今の相手がダメでも別の誰かを探せばいいというわけ。カジュアルな関係を求める身にはいいけれど、結婚相手を探す人には困った話だ。

プログラマの居場所さがしはどこか出会い系時代の受難に似ている。世の中は新しく魅力的なテクノロジに溢れている。みなよく出来ていて、アクティブで、未来を感じる。でもこの先もっといいテクノロジが登場するかもしれない。週末に試して手応えを調べようか。でも先週書きかけのプロジェクトがまだ片付いてないな・・・そういえばこないだ送った pull request どうなったろう・・・返事きてるのに無視してた・・・え、この本読んでから出直してこい、ですか・・・。

テクノロジの社会的洗練も人々を煽り立てる。オープンソース・プロジェクトは居場所としてのコミュニティ運営に労を惜しまない。フォーラム、ソーシャルメディア、カンファレンス、コントリビューションガイド・・・声は届き、コードは取り込まれる。殺伐荒野のオープンソースは過去のものになりつつある。プロプリエタリな製品でもかつての無機質さは影をひそめる。企業主体のイベントのみならず、当事者がオンラインのあちこちに顔をだしユーザと対話している。

居場所を求めればその願いが叶う。良い時代になったと思う一方、社会的な誘惑がかつてなくプログラマを惑わしてもいる。斜に構えた見方をすれば、自分たちの秘めたる欲望がテクノロジ・マーケティングの餌食になったとも言える。でもどちらかというと Paradox of Choice の文脈で考える方が腑に落ちる。選択肢が多すぎると人は不幸になる。何を手に取っても後悔するばかり。選ぶだけでくたびれてしまう。ホットなテクノロジはどんどん入れ替わる。きりがない。

おうちがいちばん

Paradox of Choice に疲れた人への処方箋は「一番良い」のかわりに「十分良い」選択肢で満足すること。同じことはテクノロジ選びにも言える。気に入った「十分良い」テクノロジに腰を落ち着け、しばらくそこでがんばる。一つの解決だと思う。無印を買えとは言わない(けっこう高いし)までも、皆がみなヒップスターでなくていい。

あるテクノロジに腰を据えると、主観的にはそれが自分にとって「一番良い」テクノロジになる。習熟がもたらす自信。コミュニティに所属する安心感。テクノロジへのエンゲージメントには正のフィードバックがある。テクノロジは移り変わるから、今の「十分良い」もいつか十分でなくなる。でもその入れ替わりの周期は、市場の「一番良い」テクノロジの周期よりずっと長い。「十分良い」はそれなりに日持ちする。加えて自分自身の習熟や影響力が賞味期限を延ばす。新参者にとっての良さとベテランにとっての良さは違う。

テクノロジへの習熟は、あるテクノロジ、たとえばツールやフレームワーク固有の技法を身につけても終わらない。使えるテクノロジがひとつだけではさすがに仕事にならない。それでもどこかに居場所があると、それを足がかりに辺りを歩き回ることができる。ウェブのフレームワークならデプロイメントやデータベースをはじめ様々な周辺技術を試せるだろうし、言語処理系の実装、プロトコルといった要素技術の中身に目を向けてもいい。モバイルなら UX やメディア処理などがすぐそばにある。

わかりやすい隣接関係が全てではない。たとえば自分のテクノロジを育てるべく競合を知る。弱点を補うテクノロジを学ぶ。数駅先で交わるテクノロジがある。

戻る場所があるから旅行、冒険ができる。見聞を伝える相手がいる。戦果を飾る広場がある。逃げ帰る家がある。居場所としてのテクノロジを通じて世界への理解を深めるプロセスこそが、そのテクノロジへの習熟だと考えてみる。「十分良い」を「一番良い」に引き上げるのは、そんなエンゲージメントの力だ。

N 回目の別れ

蜜月もいつかは終わる。

ヒトと比べてソフトウェアの寿命は短い。自分が勝ち取ったテクノロジもある日を境に少しずつ衰えはじめる。死が二人を分かつ日は期待するほど遠くない。墓守にでもならない限り、古巣を去り新しいテクノロジに身を投じる日は待っている。

居場所に愛着が強いほど終わりを認めるのは難しい。けれど名残惜しさや別れの痛みは血の通う証でもある。冷え切った関係は体から熱を奪う。自分の愛したテクノロジがそうなる前に、少しずつ別れを告げよう。いつもより遠くの国へ旅をして、新しく関係をやりなおそう。

やりなおしのエンゲージメントは、良くも悪くも初めてのそれとは違う。必ずしもかつてのような熱意はない。一方で焦りもかつてほど大きくない。擦り切れたテクノロジの隙間から滲み出た居場所の澱が、あちこちでぼんやりと瞬いているのに気づく。往年の輝きはないが暗闇の心細さもない。古巣への情も気休めになる。着古したジャケットを羽織ると社会的欲求は近寄ってこない。テクノロジのライフサイクルを見越した慎重さが身を助ける。次の十分良い何かを決める惑いは少ない。

自分を突き動かす社会的欲求の必死さがない。それは弱さでもある。テクノロジとの関係が、少なくともはじめはどこか冷めている。信頼関係を築き心を許すまでに時間がかかる。冷めていて慎重なのは何かをなくした人間の性。情熱と焦燥に駆られて走る人々には追いつけない。

それでも共に日々を過ごせば、いつかわかりあえる日がくる。ゆっくりと情の灯がともり、静かな蜜月が訪れる。別れもいずれまたやってくる。永遠の愛を誓うことはできない。だから限られた時の中でこの身を捧げる。最期の夜に伝える言葉を胸の奥に留めながら。


新井さんの人気 を羨んで書いた草稿にコメントをくれた @karino2012 ありがとう。