はじめに
発言は個人の責任であり、所属する組織の見解を代表するものではありません。
とは言え実話でありタイトルの通りの議論になって結果的に色々と悟ったのでつらつら書いてみます。
登場人物
私・・・ 役割:エンジニア兼プロダクトマネージャ
Aさん・・・ 役割:エンジニア
エンジニアはインフラ・ミドルウェア・バックエンド・フロントエンド全ての領域を担当。
発端
Aさん「Pull Requestを送りました。レビューよろしくお願いします」
私「見ました。コードの根拠(なぜそうしたか)が分かるコメントがあるといいな、と思います」
Aさん「そんなの必要ですかね?なぜそうしたかよりも、どう動くかが大事であり、それはコードを読めば分かりますよね」
私「(う~ん、そうなのかな・・・)」
発展(その後)
私「例えば半年後に そのコードがなぜそうなっているか分かった方が後々 楽だと思います」
Aさん「コードを見れば連鎖的に思い出せるはずです。そのために今もこうして双方でやりとりしていますよね?」
私「それはそうですね、とは言えどこか(例えばドキュメント等)に記載しておいてほしいですね。私はAさんのように記憶できないですし、自分が誤った記憶を作り出す場合があると認識しておりそれを危惧しています」
Aさん「先程も言いましたが、コードの根拠やどう設計したかよりも実際の動作が正です。それに自分の業務知識くらい正確に記憶してください」
私「私たちはドメイン駆動設計等を通して設計の大切さについて学んだはずです。それらの思考の過程はどこかに残すべきではないですか。また私は自身の記憶を信用していないので記憶に頼る進め方はしないポリシーです」
Aさん「残すべきと考えるのであれば、またあなた自身がそのポリシーを持っているのであれば、あなたがドキュメントやコメントに残せば良いでしょう。実際 今までもそうしていたでしょう?そもそも私達2人のプロダクトなのだから私達だけが記憶していれば済む話です。わたしはコードから当時の考えを呼び起こすことができますから」
私「コードは設計(ドメイン知識や設計の微妙なニュアンス等)を正確に反映できないと考えています(設計書からコードを自動生成でもしない限り)」
Aさん「何度も言いますが、正しいのは実際に動くコードです。設計と食い違いがあっても実際の動作が正です。そもそもドメイン設計をやった後でコードに落とし込みテストまでやっているので食い違いは無いと思います」
私「(本当にそうだろうか)・・・」
私「しかし、一部はコードが先行し設計がドキュメントとして残っていないケースがあります」
私「今は2人ですが、ゆくゆくはスケール(開発者を含むステークホルダーを増や)したいと思っています。そのためにもステークホルダーが読み取れる形で情報を残したいのです」
Aさん「本当にスケールするんでしょうか。私は1年ほどでこのプロダクトはEOLを迎えると想定しています。だからそのようなステークホルダーは存在し得ないのです。存在しないステークホルダーのために無駄な作業はしたくありません」
私「なぜそう思う(スケールしないと思う)のですか」
Aさん「この半年間2人から増えていないからです。何度か人数を増やして欲しいと言ったはずです」
私「私はまだ増やすべきでないと考えています。まだユーザもいないですし、それに人を集めるならこのプロダクトに共感してくれる人に参画してほしいと思っています。ただ人員を募集するやり方は見た目上のスケールにしかならないと考えています。まずは自分たちでMVP(Minimum Viable Product)を作るべきです」
Aさん「では(早くMVPを完成できるように)あなたはもっとコミット・PRをしてください。ほとんどわたしのコミットとPRしかないじゃないですか!」
私「そうですね...Aさんよりもコミット数・PR数が少ないのは事実です。言い訳として、私は将来のためのコメントやドキュメントを残したり、プロダクトの方向性を決めるためのユーザインタビュー等も計画しており、同様の時間を開発に割り当てることができないのです。もちろんコミットやPRをしようとは思っています。しかし私はAさんよりも素早くコーディングできないのです・・・」
Aさん「では時間を作ってください。業務時間以外も割り当てれば時間が増えますよ」
私「・・・そうですね...」
まとめ:会話を通して思ったこと
- 社会人になってからAさんと10年弱色々やってきたが、何も理解できてなかった
- アジャイル、クリーンアーキテクチャ、DDD(ドメイン駆動設計)等をともに学習したが、それでも認識の齟齬は発生すると理解した
- 自分ができていないと言えば、それまでな話
- 双方で上記のようなやりとりでストレスを溜めてしまうのは良くないので、もしこのままなら最終的には自分が去るべきだろうな(Aさんは自分よりも優秀なので)
- とは言え可能な限りやってみよう