みんなのキャッシュになったり検索基盤になったりプロキシになったりしています

プロジェクトリーダーという役割のことです。もう何ヶ月もコードを書かず、仕様も決めない、という状態が続いています。大切な役割だという自覚があっても、ずっとこの仕事ばっかりやるのはちょっといやかもな、いや、まあこれはこれで面白い部分もあるけどな〜みたいな気持ちになっています。

コーディングは協力会社、コードレビューもチームメンバーなのでソースコードをほとんど見ません。そしてプロダクトオーナーは別にいるので、仕様は決められません。本当に彼らが行う作業以外のことをする雑用係です。否定的なニュアンスはありません。雑所得みたいなものです(あれ?あんまり肯定的じゃない?)。膨大な情報を整理する係という感じでしょうか。プロジェクト自体もそうですし、社内の他のプロジェクトとの調整がめちゃくちゃ多いので、やることはあるんですよね。というか最近大変すぎます。何も生産的なことはしないまま、時間がどんどん溶けていくイメージでした。プロジェクトの最初の頃は。

しかし途中で考えが変わってきました。システム構成でいうと、わたしはキャッシュであり、検索基盤であり、プロキシなんだな、と。大規模システムには欠かせない存在です。実際やっていることはそうなんですよね。情報を集約して、ビジネス側からのロジックレベルの質問に答える。実装側からの業務や要件についての質問に答える(キャッシュヒットすれば)。スケジュールに限らず、業務情報の一覧を整理しておいて共有して、情報の流れをスムーズにする(Elasticsearchの気分)。ビジネス側からの提出仕様をチェックしてOKなものだけを実装側に渡す、実装側のトラブル報告からビジネス要件に関わる部分だけをフィルターして報告する(プロキシ、と言いつつ間違えて不適切情報をときどき通してしまうこともありますが)。もう少しプロジェクト全体が大きくなると、現在のわたし自身の役割も分割されることでしょう。というか普通はキャッシュサーバと検索基盤サーバとプロキシが単一の物理サーバにいるわけない。

以前から感じていてこのブログにも書いた気もしますが、ソフトウェアエンジニアとしてプログラミングを行うことと、マネージャとしてチームを機能させることは個人的には全然違うことだと思えないんですよね。少なくとも、わたしにとってやりがいがある部分は全く同じです。部品もしくは自律的な要素の、関係性をコントロールして目的を果たす、という点です。だから、どちらかがどちらかを毛嫌いするのは勿体ないなあと思うわけです。そして、プログラミング好きがマネージメント能力をつけたいときは今回のアナロジーが使えるのでは、とも考えます。逆に、ITについてよく知らない人にシステムを説明する場合は上記のような擬人化だと下手なたとえよりうまくいくはず。要するに、システム構成とエンジニアチームは本当によく似ていると思うんですけどね…わたしだけですかね?