この2年間を振り返る
前回の記事に引き続き振り返りの記事だが、特にこのタイミングで転職を考えていたりするわけではない。
ちょうど2021年も半分が終わろうという時期だけど、これも偶然で、長く関わっていた仕事がしばらく前にひとつの区切りを迎えたので、今回はこれを振り返ろうというものだ。
この2年はほとんど全てこのプロジェクトに関わる仕事をしたと言っても過言ではない、と言いたいところだが、実際には長期的に必要な他の仕事も並行して進めていた時期もあった。
そして先日、このプロジェクトが一つのゴールを迎えたので、この記事を書く運びとなった。
事の始まりは2019年の8月だったと記憶している。
1週間程度のまとまった休みをとり、久方ぶりに実家に帰省した。
当時はまだ新しいウィルスが世界中で猛威を振るうとは露ほども思っていなかったけれど、実家への帰省は旅行と同様、できるときにやっておくべきだと今では思う。
それはさておき、実家から戻り仕事に復帰してすぐ、上司から「新しいプロジェクトがあり、そろそろ本格的に動き出すから入って」という話をもらった。
このときはまだ、プロジェクトを一から考え推し進める人だけが注力している状況で、経営層に近い人たちが要望や意見を述べたり、幾許かの提案をしている他はその人がすべてを考えているというような状況だった。
僕と同時期に関わり始めたメンバーも何人かおり、エンジニアだと iOS アプリの開発を担当してくれた同僚は8月から入っていた。
このプロジェクトは社内でもかなり大きな意味を持つもの、ということは経営層からもアピールがあったものの、実際にすぐ開発に入れるという状況でもなく、最初の3ヶ月くらいは関連するプロダクトをリサーチしたり、残っていた仕事を片付けながら、開発計画を練っていった。
(僕は直接は関わらなかったが、このタイミングでアプリエンジニアを1名採用した)
10月から11月にかけて、社内のエンジニアの誰にこのプロジェクトに関わってもらうかの検討も進めており、彼らの担当していた仕事が落ち着いたタイミングで順次プロジェクトに入ってもらった。
年明け2020年の1月には計画していた最後のエンジニアが参画してくれ、このプロジェクトが1つのゴールを迎える少し前までの間、1年以上同じチームで開発を進めることとなった。
ここでプロジェクトにおける僕の役割について言及しておくと、アプリの開発チームとサーバサイドの開発チームそれぞれに対してエンジニアリングマネージャとして、開発計画の策定や進捗の担保、外部のチームとの連携などを中心的に行った。
この仕事で僕と密接に関わったのはアプリ開発をやりきってくれた2名のアプリエンジニアと、既存の Web アプリケーションをこのプロジェクトに対応させるためのあれやこれやをやりきってくれた4名のサーバサイドエンジニア、そしてプロジェクトのリーダーだったと思う。
また、大事なこととして、このプロジェクトで作られたアプリおよび関連するサーバサイドのコードに、僕が書いたコードは1行も含まれていない。
求められた役割や、タスクの優先度、そして個人的な挑戦として、僕自身はエンジニアとしてカウントせずにプロジェクトは進められた。
アプリの開発については、関わっていた2名のエンジニアが非常に優秀だったこと、片手間でエンジニアとして入るには直近2年以上アプリ開発に関わっていなかった自分では力不足だったこともあり、マネージャとしての仕事に終始した。
ここについては面白いエピソードを書けたりはしないので言及しないでおこうと思う。
サーバサイドについては、新規に一から実装したわけではなく、既存コードについては僕自身も知見があったこともあり、こちらについては少し言及しておきたいと思う。
サーバサイドで既存のものを活用する案というのは僕が関わり始める前から出ていたものだ。
主な理由としては似たものをもうひとつ作るコストが大きいということ、一から作るのに十分なエンジニアを確保できる見込みがなかったことがあげられる。
とはいえ、既存のプロダクトに新しく大きな変更を入れ込むのは非常に難しかった。
既存のプロダクトも当時既に7年選手であり、現状のサービスイメージに対して最適な実装になっていない部分は少なからずあった。そこに新しいものを入れようというのだから当然ではある。
ざっとやったことを列挙すると以下のような感じになる。
(大事なことなので再度書くが、僕はこれらの実装部分については関わっていない)
- 技術選定および新しく導入する技術についての調査・社内への情報展開
- サービスで2番目に大きいデータのデータ構造を大きく変更
- 上記データに紐づくデータに様々な足かせとなるデータがあったので構造を刷新
- 技術的な側面の強い細かい仕様の検討・決定
- 既存プロダクトには存在しない新たなデータの構造設計・実装
- いくつかの複雑な実装についてそれぞれに注力する期間を設けて、個別に対応
実装に関わっていない人間がこれらにどう貢献したのか、というとこれは難しいところだと思っている。
自分の視点では、自分がいなくてもちゃんとゴールに到達できたように見えるし、一方で現実にはそうではない何かがある可能性が高い(でなければ、僕はコードを書いていた方がよほど貢献できたことになる)。
アプリもサーバサイドも、実装自体はかなり順調に進んだように思う。
計画に対して、完了時期が大きく後ろにズレたりといったことは全くなかった。
ずっと同じメンバーで進めていたからか、見積もり精度もどんどん上がっていって、後半は開発進捗が予測を下回ることはほぼなかった。
また、初期の概算見積もりに対しても、最終的にはほとんどオンスケジュールというか、予測した期間で予定通りの進捗が出せるという非常に安定したスピードでの開発が行えた。
このあたりについてマネージャ目線で何が良かったのか、どうすれば再現できるか、については思うところはあるものの、環境要因のものも少なくないし、自分の中でちゃんと整理しきれていない気がしているので、ここでは言及しないでおこうと思う。
最後に、これから何をするかを少しだけ書いておこうと思う。
Web サービスなどの開発に関わっていると「リリースは終わりではなく始まり」といった言葉をよく聞くが、今回のプロジェクトもここから始まるといっても過言ではない。
が、僕はこのプロジェクトからは離れることになる。
理由は当然、他にやるべきことがあるからだが、そのうちの一つはこのプロジェクトが積み残した課題の一つであり、そういう意味では間接的に関わっていくことにはなる。
とはいえ、ここからというタイミングで離れざるを得ないのは非常に残念であり、その点については思うところはある。
これからやることになる仕事は、サービスやプロダクトというよりはシステム的な課題の解決を目的としたものが多く、そういう意味ではより得意な領域に移ると言えるかもしれない。
また、個人的な挑戦としてここ2年ほど業務でコードを書いていなかったわけだが、自分としては一定の目的は達成できたと考えているので、コードを書くエンジニアに復帰するつもりでいる(エンジニアリングマネージャをやめるわけではない)。
今一番の心配は2年のブランクを乗り越えてエンジニアとして前線でやっていける腕が残っているか、だ。