昔DeNAの新人が入社後半年だかの振り返りのプレゼンの中で「うまくモチベーションが上がらなくて」ということを言った時に、南場社長が「社会人がモチベーションで仕事をするな」とすごく怒ったという話*1があって、とても印象に残っている。
また、これは実体験だが、その当時所属していた会社のけっこう中心的な人物が退職する送別会で、その人が受け持っていた客の話になった時、「あれもこれも大変なお客さんですね。私たちに引き継ぎできるものですかね」と残された側が不安をこぼすと、その人は「仕事やろ」とピシャリと言った、という場面をよく覚えている。
どちらも胸に氷を刺されたような、うすら寒い気持ちになったからだった。
私は、社会人だが、どうにも好き嫌いで仕事をしている節があった。やるべきことを淡々とこなすのではなく、やらなくてはならないことの中に何とか自分の興味が持てるようなテーマを見いだして、努力の為のエネルギーを絞り出すような働き方だ。つまり、私が仕事と称しているものは、それをすることによって「精神的な高揚感」を味わえるような作業のことだったりする。
だから、それらの高揚の快楽を否定して、エネルギーの源を「社会人」とか「仕事だから」という理由から振り絞れているように見える人の前では、自分が偽物の社会人なのが露呈したようになって、冷や汗が吹き出てしまうのだ。
私には、感情や興味に左右されずに職務を遂行するというやり方ができるほうが不思議で不思議で仕方ない。逆にそういう人から見れば、私のやり方はいかにも不安定で、よくもそんな遊び半分で仕事をしていて食っていけるものだ、と思うだろう。(私個人の話で言えば、あまり食えてはいないのだが)
今の今までこのやり方が通じていたのは私がプログラマだからかもしれない。
例えばWebを例に出すと、SPAや、SSRを駆使した最新のNextjsで組まないといけない案件なんてそうそうない筈なのだけど、jQueryやWordpressより少しマシ、みたいなソリューションでメジャーなものが、なぜかこの業界にはほとんどないので、例えば古いRailsアプリのフロントエンドを新しくする時は、自ずとTypeScriptとReactみたいな話*2になる。
こういう業界標準のナウいフレームワークのいいところは学習曲線と品質管理を「無限」に設定可能なことだ。自分でゴールを設定しない限り、やればやるほど使いこなしていることになるし、洗練されることになるし、常に何かが足りないから、無限に作業をし続けられるのだ。
lintチェックを無効化して、any使ったら5分で終わる作業を1日かけてGenericにして、lintエラーを出なくする「だけ」の、お前それ費用対効果どうなってんだという作業をしても、実際そういう意味の作業をしていることに誰も気づかないし、何ならすごい人扱いしてもらえたりする。困難で理不尽なtypeエラーと戦う責任感ある社会人の顔をしていながら、私が実際にやっていることは型推論に欲情し、涎を垂らしながらReactのレンダリングを頭でトレースしているだけだというのに、誰もその邪(よこしま)さに気づかない。私がしっかり「仕事」していると皆が思い込んでいる。
そういう二重生活をしているから、「仕事なんだから、ね?」と言われるとギクリとしてしまう。実際のところ私がやってることは本屋でバズル本を買いあさった老婆が、自宅でしかめっ面でクロスワードを解いているのと変わりないからだ。パズル本と目の前に並べられた年末調整の書類を交互に見て、「仕事なんだから」の意味を理解しようとしても、彼らが一体何の価値観でもってこれに納得しているのか、自分が納得すべきなのかが、わからない。ただ、わかっていないことに気づかれてはいけないことだけはわかっているのだった。
別にそれで給料が貰えるならいいんじゃないの?という話もあるかもしれない。実際、もらえる。ありがたい話だ。AIによって今後どうなるかはわからないが、まだ当分は大丈夫そうだ。
問題は、これをやっていると、そのうち動けなくなってしまう、ということだ。
動機というか仕事を進める力のほとんどを内発的なものに頼っているので、それが無くなってしまうとパフォーマンスが落ちていく、落ちるだけならいいが、たいてい最後には何も出来なくなってしまう。
こうなると焦る。新しい技術、面白そうなライブラリ、難解なバグ、知的好奇心を刺激してくれる「何か」を探して、出力を維持しようとする。技術ブログを徘徊し、SlideShareを漁る。まるで獲物を探す狩人だが、その動機は「成長したい」というよりガス欠寸前の車が血眼でガソリンスタンドを探しているのと同じで、切実なものだ。
GitHubのトレンドのアーカイブ*3まで見だしたら末期症状だ。もうSlackの通知音一つで飛び上がるような心理状態になっていて、簡単なタスクを頼まれても一種の現実逃避でどうでもいい部分のリファクタリングに没頭したりして、結果を出すまでに平気で2~3日かけだしたりする。まわりは控えめに「〇〇さんはすごいけど、ちょっとムラがあるよね」とか「スイッチ入るまで時間かかるタイプ」と、囁いている。本物の社会人たちが自分の枠組みの中で、私という異常者を説明しようとしているのだが、長々と書いたように、どれも的外れだ。そいつはもはや社会人でもなんでもないのだから。
だからまあ、冒頭の南場社長の怒りというのは、単に給料泥棒に対する怒りではなくて、本当に社員のことを思った怒りで、こういうモチベーションの上下で仕事をしてきた人間の末路を色々見てきたからこそなのだろう、と今になって思う。実際、こうなってしまってからでは遅いのである。
さて、そんな私はもうダメか、と言われると実はそうでもないことに最近気づいた。
ある現場に入ったところ、「コードを書く人数は足りているので、進捗管理や仕様のとりまとめなど、PM的なことをやってくれないか」と言われたのである。
まず、私はプロジェクトのドキュメントやコードを読んだ。チケットシステムを見る限り開発が停滞してはいるが、コードは整然としている。私は若いプログラマたちと会議室で対面した。彼らは新しく来たPMがどんな無理難題を言ってくるのだろうかと戦々恐々としているように見えた。
「まず直近のタスクとして上がっている、バグフィクス#NNNだけど……」
と私は話をきりだした。
「テストケースが漏れていたので、追加する必要があるのと、修正の前に少しリファクタリングしたほうがいいと思います。そこ前に緊急修正でカオスになっている部分で」
と若いプログラマはこちらの目を見ないで言った。
「なるほど。」私は言った「どれぐらいかかりますか?」
1週間ほど、とプログラマは答えた。新参のPMなので、タスクの軽重は判断しづらいが、好きにやればそれぐらいにはなるだろう。急げば2日といったところかもしれない。と私は見当をつけた。
「それほど差し迫ったスケジュールでもないので、じっくりやったほうが良さそうですね。最終的にコードが整理できればトータルでは得することになるわけですし。そういう事情を上には丁寧に説明しておくので、1.5週を目処に作業してください」
私はにこやかに言った。彼らは意外そうな顔をした。そしてようやく私の目を見た。私は笑顔を作ったまま、そうだよ、僕も君たちと同類の人間だよ。と心の中で言った。
そこからはスムーズだった。私は、1.5週のあいだにじっくりとドキュメントを整備することができた。営業には開発停滞の原因はドキュメント不足とコードベースが場当たり的に拡張されてカオスになっていることで、今総力を挙げて整理している、と伝えた。
開発はゆっくりではあるが進み始めている。もっと早く進めることができるかもしれないが、人手不足の今、無理をしてエンジニアに辞められては元も子もない。派遣元の担当営業によると、「エンジニアとも、営業ともきちんとコミュニケーションがとれている」と派遣先からの私の評価も上々のようだ。
「うちのエンジニアはわりと難しいんですが、○○さんは問題ないみたいですね。何か秘訣があるんですか?」とある日、飲み会の席でディレクターに言われた。私は曖昧に笑って誤魔化した。彼らの内面を暴かないこと、社会人としての外装をうまく取り繕う手伝いをすること、が本当の秘訣だ、が、それを正直に言うほどお人好しではなかった。
考えてみれば、ReactやTypeScriptや、k8sや、種々の現代的なフレームワークや巨大なシステムが果てしない拡張性を持っていて、MetaやGoogle以外の明らかにそれが必要でない場所でも、もてはやされることが多い理由の半分ぐらいは、この手の共犯状態(モチベーションや精神的高揚感で仕事をしたいエンジニアと、ゆっくり働きたい管理者)で出来上がっているのかもしれない。PreactやAlpineでは、結局のところビジネスの要請に応えることはできてもプログラマの要請には応えられない、ということなのだ。
世界がそんなふうに出来ていると知ってから、私はようやく安堵することができた。そして、静謐な自室で、Wikiを編集しながら、相変わらず仕事とはなんだろう、と考えるのだった。