来週30歳になる。気がつけば30歳になっているのだろうと呆けていたが、いざ明後日となるとああもう20代は終わるのだなという気持ちになってきた。目黒川は桜日和、花粉まみれ、人だかり。散歩していたら何かこのタイミングで文章を書いてみようと思い立った。
20歳のころ、大学3年になっていた。少しずつプログラムを書いたり、課題や試験に追われながら、毎日のようにクラシックギターを弾いていた。特にマンドリンオーケストラの友人たちや先輩後輩たちの影響でいろんな音楽を競うように聴いて、薦められるがままに本を読んだ。レコードショップでバイトしている友人に大量のクラシックCDを薦められて聴き、セミプロのようにギターを弾いている先輩にジャズを薦められてとりあえず聴き、法学部の友達に古い小説を薦められればとりあえず読んだ。飲み会になれば音楽と哲学の話をして、ひたすらビールを飲み、また朝ギターを担いで学校にいく。紛うことなきモラトリアム大学生活である。その頃に読んだ本はほとんど実家に送ってしまっているし、内容もほとんど忘れてしまっている。タイトルすら思い出せないものがほとんどだ。
お金をもらってプログラムを書くようになったのも20代になってからだ。先輩に紹介してもらった特許法律事務所で事務職のバイトをしていたところが始まりだった。大量のWordとExcelファイルを手打ちしつつ、物理的なファイルを事務所中に縦横無尽に運ぶ仕事だ。細かい作業をVBAでこっそり自動化し、ExcelからInternet Explorerを立ち上げて管理システムへの入力をするツールを書いて楽をしていたところ、いつのまにかプログラムを書いて何かするほうがメインの仕事になっていた。30-40人程度の部署だったので、少し効率が上がるだけで仕事がぐっと捗るようになる。不便なところを解消すればするほど目に見えて作業が捗っていくので、人に使われるプログラムを書くのはとても面白いことだなあと思ったのである。
その後はインターンをしたり、大学院に進みつつ研究をしたりしていた。プログラムを書くのがある程度得意かもしれないと自覚するのは今の会社のインターンにいったときである。自分の所属していた学部はそこまでプログラムを書くのが得意な人がいなかったので、Webの会社のインターンにくるような人たちは果たしてどれくらいプログラムを書けるのだろうかという好奇心があった。参加してみると、それなりに自分はものを作れるっぽいということがわかった。また、複数人でプログラムを書くというのは面白いものだなと思ったのもこのときだ。当時は職業プログラマになろうとは思っていなかったのだけど、気がつけばプログラムを書くことを仕事にしているのだからわからないものである。
その後もプログラムを書いて身銭を稼ぎつつ、ひたすら大学の図書館と自宅を往復していた。プログラムを書くようになると技術書をなんとなく読めるようになる。大学の図書館は最高だった。自分がいた矢上キャンパスの図書館にはWeb開発に関する書籍は少なかったのだけど、他のキャンパスからの取り寄せが簡単にできた。Web関連の技術書が豊富にある湘南藤沢キャンパスから取り寄せることができたため、気になった本は翌日には手元に届く。修士2年のときには年間で100冊超借りていた。5000円の技術書を気軽に買うお金も置くスペースもなかったので、大変ありがたかった。借りた本はすぐ研究室の自分のデスクに山積みにし、合間の時間に動かして遊んでいた。
今振り返ると、Webに関することだけではなくて、経営工学に関するトピックを大学で広く触れられたのはとてもよかった。統計の基礎理論、会計学、ヒューマンエラーに関する実験と理論、オペレーションズ・リサーチなど。私は試験とかテストの類が好きではない(好きな人がいるのだろうか?)ので、当時はひどく面倒に思ったが、結局どれも自分の今の仕事に活きている。僕にとってプログラムを書くことは書くことそれ自体よりも、どういう問題を解くかが難しい。問題を設定するために、これらの学問は大変役にたっている。
研究室が自由だったのもよかった。週ごとの報告や論文読み合わせなどはあったが、自分の好きなインターネットあるいは人工知能に関する具体的な応用事例を中心にリサーチする時間をとれたのはとてもよい時間だった。論文は読み始めるととても効率的に量を読めるし、ある領域の論文をまとめて読んでいくと頭のなかでロジックが固まっていくのがよかった。当時は元住吉に住んでいたので矢上キャンパスへは自転車で10分かかずにいけた。朝起きて矢上のパン屋にいき、朝飯をかって研究室でパンをかじりつつ、ひたすらPCを触っていた。帰るのは24時くらい。修士1年の末からは研究をしつつTrippieceの開発もしていたので、今よりもだいぶ忙しく過ごしていた。当時の記事をみるとなにやら頑張っているようなことを書いているが、今見返すと若干恥ずかしい。あまり文章のテイストは変わっていないようだ。
新卒として今の会社に入社したのは24歳のとき。入社してからは正直あっという間だというのが感想だ。やっていることも触れている人たちもどんどん変わっていっているが、日々ひたすらにプログラムを書いて議論をしていたらあっという間に時間が流れていた。プロとして仕事をするのは、大変であり、楽しいことだ。自分で問題を解くのもさることながら、多くの人と意見を交わし、競合を分析し、戦略を考え、論理を整理し、文章を書き、人を動かす。仕事は総合格闘技で、みんなそれぞれのやり方で携わっている。今は相変わらずインターネット、そして広告の仕事をしているけれど、次の10年ではきっと同じテーマでも違うテーマでも、もっと面白い仕事になっていくだろうと今から楽しみになっている。奔放で、とある調査曰く"悪魔の代弁者"のような自分を受け入れ、裁量と環境を作ってくれた同僚に感謝している。
僕にとって20代はどういう時間だったんだろう。ラベルをつけるなら、前半はひたすらにカオスで、後半は秩序だったかもしれない。10年間を通してずっとやっていたことは、プログラムを読み書きし、大量の本と向き合い、音楽を聴き漁り、今日も飽きずにぽろぽろとクラシックギターを弾き、お酒を飲みながら好きな人達と好きなことについて語ることだろうか。ああ20代。こう書いていると次の10年も変わらない過ごし方をしている気もしてきた。けど、今毎日が毎日違うように、きっと全然年を重ねて行くのだろうなあと思う。相変わらず、大好きなエンジニアリングと、インターネットと、そしてものを読み書きすることを楽しみながら、次の10年の仕事を作っていきたい。
また酔っ払いながら徒然と文章を書いたり話をしたりしていくと思いますが、引き続きみなさまよろしくお願いいたします。 wishlist
2018/03/17
規模と質とプログラム
素晴らしいプログラムを見ると感動する。思いもしていなかったものが実現されているとはっとし、なぜそれが可能なのかを理解し、自分がなぜそれを先にできなかったのかを悔やむ。プログラムを書くことは理知的ながら感情的で、抽象的だが肉体的なものだ。
仕事をしながらプログラムを書いていると、自分は効率が最優先になる。効率を上げることは書く時間を短縮することも去ることながら、書いたコードが最大限の効果を発揮することを思考することにある。ソフトウェアは無限にスケールする。実現できていることが役に立つなら、想像もしない多くの人に利用される。今日書いたコードが明日には顔を見たこともないひとに意図せずに触られ、生活に組み込まれ、利用される。結果は数字となって解釈可能になり、どのような反応があったのかを限りなく私たちが認知可能な範囲のものを数字に落としこめる。
伸び続けなければならない組織であることは、効率的なコードを書くことを強いる。効率は競合優位であれば増し、組織を効率に浸す。それは自らを加速して、他を圧倒し、組織を超えて成果になる。それは効率的な市場を作る元になる。これは逆説的で、伸び続けなければならない組織がある背景には競争と、市場のカバレッジ及び拡大のあり方が前提になっている。つまり、伸びなければならない組織というのは制約からそうなっている。
プログラムの本質は何かをできるようにすることだ。ソフトウェアで何かを実現することだ。
私たちは人を、そして自分を、多くの人を満足させたことで評価する。これは危うい。評価しているように思える。多ければ多いほどそれは競争優位になり、利益になり、インパクトであると言う。でもそれは結果による評価になる。なので私たちはプロセスをみて評価を試みたり、方法についてあれこれ組織内や、あるいは組織外のアプローチについて議論し、評価をしてみる。結果に基づかない評価は本質的ではない。結果は、プログラムが何を生み出したかにある。
ソフトウェアで何かを実現できるようにすることは、結果の面でわかりやすくなりすぎる。それは実現されたものが鮮明であり、まわりを納得させるものであればあるほど、自明に思える。実現された以前と以後では世界が変わっていて、ソフトウェアの世界に落とした時点でソフトウェアの加速度に置き換えてしまっている。ソフトウェアの加速度を更に良くし、更に継続可能にする技術ばかりが評価されてはいけない。ソフトウェアで問題を解決可能にするように問題を設定し、見せることが本当に価値の源泉である。
伸び続けることばかりを関心の中心に置くと、つい生まれた世界を見誤ってしまうことがある。たとえ10人のためにつくったソフトウェアであっても、それがその人達の世界と価値観を変えたなら、やはりそれは今までとは全く別の世界になっている。スケールさせる技術ばかりに目を奪われていないか。そのときに実現できたことの尊さとソフトウェアの素晴らしさを忘れていないか。収益構造に目を取られて何かを変えること自体の効用を見失っていないか。そして何より、一人のエンジニアとして規模を重視しすぎていないか。
規模を重視するのは素晴らしいことだ。それはインパクトそのものだ。そして伸び続けなければならない組織ではスケールアップかスケールアウトのどちらかしか選択肢はない。そういう制約のなかであっても、自分が書いたプログラムがその10人に生んだひらめきと、生き生きとした感覚と、そして何を具現化したのかということを書き手の実感として失ってはいけないのだと、改めて思う。
仕事をしながらプログラムを書いていると、自分は効率が最優先になる。効率を上げることは書く時間を短縮することも去ることながら、書いたコードが最大限の効果を発揮することを思考することにある。ソフトウェアは無限にスケールする。実現できていることが役に立つなら、想像もしない多くの人に利用される。今日書いたコードが明日には顔を見たこともないひとに意図せずに触られ、生活に組み込まれ、利用される。結果は数字となって解釈可能になり、どのような反応があったのかを限りなく私たちが認知可能な範囲のものを数字に落としこめる。
伸び続けなければならない組織であることは、効率的なコードを書くことを強いる。効率は競合優位であれば増し、組織を効率に浸す。それは自らを加速して、他を圧倒し、組織を超えて成果になる。それは効率的な市場を作る元になる。これは逆説的で、伸び続けなければならない組織がある背景には競争と、市場のカバレッジ及び拡大のあり方が前提になっている。つまり、伸びなければならない組織というのは制約からそうなっている。
プログラムの本質は何かをできるようにすることだ。ソフトウェアで何かを実現することだ。
私たちは人を、そして自分を、多くの人を満足させたことで評価する。これは危うい。評価しているように思える。多ければ多いほどそれは競争優位になり、利益になり、インパクトであると言う。でもそれは結果による評価になる。なので私たちはプロセスをみて評価を試みたり、方法についてあれこれ組織内や、あるいは組織外のアプローチについて議論し、評価をしてみる。結果に基づかない評価は本質的ではない。結果は、プログラムが何を生み出したかにある。
ソフトウェアで何かを実現できるようにすることは、結果の面でわかりやすくなりすぎる。それは実現されたものが鮮明であり、まわりを納得させるものであればあるほど、自明に思える。実現された以前と以後では世界が変わっていて、ソフトウェアの世界に落とした時点でソフトウェアの加速度に置き換えてしまっている。ソフトウェアの加速度を更に良くし、更に継続可能にする技術ばかりが評価されてはいけない。ソフトウェアで問題を解決可能にするように問題を設定し、見せることが本当に価値の源泉である。
伸び続けることばかりを関心の中心に置くと、つい生まれた世界を見誤ってしまうことがある。たとえ10人のためにつくったソフトウェアであっても、それがその人達の世界と価値観を変えたなら、やはりそれは今までとは全く別の世界になっている。スケールさせる技術ばかりに目を奪われていないか。そのときに実現できたことの尊さとソフトウェアの素晴らしさを忘れていないか。収益構造に目を取られて何かを変えること自体の効用を見失っていないか。そして何より、一人のエンジニアとして規模を重視しすぎていないか。
規模を重視するのは素晴らしいことだ。それはインパクトそのものだ。そして伸び続けなければならない組織ではスケールアップかスケールアウトのどちらかしか選択肢はない。そういう制約のなかであっても、自分が書いたプログラムがその10人に生んだひらめきと、生き生きとした感覚と、そして何を具現化したのかということを書き手の実感として失ってはいけないのだと、改めて思う。