チームの認識を合わせる
チーム内の、Aさんと、Bさんの、それぞれの「理想」が合っていると円滑に事が進む
より良いものを作れる、より良い開発者体験を享受できる
「俺にとっての最高のコード」を他者が書いてくれれば最高
逆もまた然り
どういう問題が起きるのか
デザイナとエンジニアの認識の差異
デザイナが作ったカンプを、何のコミュニケーションもなくエンジニアが実装すると、思っていたものと異なるものができることが多々ある
例
ここって動くんだ
ここって文字数増えたら折返しじゃなくて、「...」と省略するんだ
データが空の時のデザインないじゃん
etc.
デザインカンプだけ見るとわからない点も多々ある
そこを推測するなり、話して聞くなりして認識の差異を埋めないとコレジャナイものができる
できてから気づく
エンジニア同士で起きる認識の差異
エンジニアの中でも何を大事にするのかや、どういう知識を持ち合わせているかで認識が異なる
例
型やテストって当然書くよね
commit messageって普通わかりやすく書くよね
関数って普通小さく作るよね
etc.
認識が合っていないと「なんでこんな分かりづらい書き方するんだ?」になる
実は、それは時間がなかったから妥協したのかも知れないし、何も考えずに書いたのかも知れない
こういう問題は、細かに指摘したり、勝手に直したりすることで、問題自体は解決できる
でも、それが積み重なると時間効率が悪いし、単純にヘイトが溜まる
チーム内の、Aさんと、Bさんの、それぞれの「理想」が合っていると円滑に事が進む
理想とはなにか
大域的には、本当の経営理念がそれに当たる
ただし、これだけでは大きすぎるので、更に細分化が必要
各人の理想がある場合は、互いの理想の根拠をぶつけ合えばいい
何かしらの根拠があるはずで、優先度を付けたり、納得することで理想を近づけられる
各人の理想がない場合もある
Aさんが「悪いコードの例」を出しても、Bさんは「どこが悪いのかわからない」と感じる場合がある
この場合、Bさんは絶対にこれを改善することはできない
ここに問題があるよということに、そもそも気づかせる必要がある
問題の存在に気付かない限り、それを改善することはできない
ここはもう運用でカバーするしかない領域だと諦めて(?)いるmrsekut.icon
自動化できるならそうしたいが、できる気があまりしない
どうやって認識を合わせていくか
勉強会をする
本の輪読などをして、それが提示する理想と、自分らの状況を鑑みて、自分らの理想を設定していく
本当の経営理念を確定し、それを根拠に意見を述べることを習慣づける
話し合い
「これはクソだ」と雑談レベルで話せるのが理想的
細かい指摘と議論
指摘だけでは、「まあ言われたから直すか」になってしまう可能性がある
指摘された側の直すモチベーションが、「指摘されたから」になってしまうと問題は解決されていない
今後も同じ問題が生じ続ける
議論をして、理想をぶつけ合っていかないといけない
細かい指摘の一例がCode Review
ただのコードレビューだけでは問題の解決にはならない