1. yykamei's Podcast
  2. #22 コードの共同所有
2024-04-15 10:27

#22 コードの共同所有

コードの共同所有というプラクティスがあります。最近、このプラクティスに思いを馳せる出来事があったのでそれについてしゃべっています。

00:01
コードの共同所有というのは、XPに出てきた概念だと思っています。
今、Agile StudioさんのAgile PracticeMap、とても便利なサービスがあるんですけど、
そこに書いてある共同所有というのを見ていて、どんなものかというのを解説を読んでみますと、
コードの共同所有は、あるところにコードの共同所有があります。
コードの共同所有は、ある特定のモジュールの修正や改善を特定の人だけにするのではなく、
チームの誰でもシステムのあらゆるモジュールを変更可能にし、
機能追加、バグ修正、設計改善、リファクタリングできるようにする、と書いてあります。
なぜやるかというのも書いてありますね。これも読んでみますか。
チーム全員で、仕事全員の質に責任を持つためである、
誰でも気兼ねなくコードを修正することができれば、
シンプルな設計、進化的設計を選択し続けることが可能となり、
顧客からの予期せぬ新たな要望にも自信を持って、
しゅんびんに適応できる。
また、チームで共同所有を実践し続ければ、
ドメイン知識や技術知識がチーム全体に広がり、
チームメンバー同士のコミュニケーションが改善される。
あるモジュールが特定の人しか触れないと、
あるモジュールで問題が発生した際に責任を特定の人にだけにする、と書いてあります。
あるモジュールで問題が発生した際に責任を特定の人にだけにする、と書いてあります。
モラルの低下が発生してしまう。
急場しのぎの修正で技術的不採を増やし、開発速度を低下させてしまう。
スケジュールが特定の人にロックされ、進捗が滞ってしまう、
などの問題が発生しやすいので注意が必要である。
と書いてありまして、コードの共同所有というプラクティスがあって、
プラクティスですね。
良いプラクティスだと思うんですよね。
マインドセットに近いのかなとは思ったりはしますね。
確かコピーライトみたいなのをよくファイルの先頭に書いたりするような文化が
昔はあった、今もあるところもあるかもしれないですけど
そういう風なのを書いてしまうと、そのファイルってその人のものみたいな感じになって
それ以外の人にとっては関係ないものみたいになってしまう。
そうじゃないよねと。コード全体が変更対象である。みんなの持ち物であると。
そんな風な概念がコードの共同所有かなと思います。
冒頭の方で読み上げた解説となぜやるのかが非常によくまとまっているので
後でリンクを貼っておこうかなと思います。
これを今回取り上げた理由は、結構コードの共同所有について
考えさせられることがあったからなんですね。
私の組織ではマークアップチームという
マークアップ、いわゆるHTMLとCSSの変更を行って
フィグマを使っているんですけど、フィグマでデザインされたデザインを
反映させる人たちがいるんですね。そういうチームがありますと。
03:01
一方でサーバーサイドってマークアップチームの人たちは呼んでいるんですけど
またそのロールの人たちがいて、それが私を含む
いわゆるバックエンドエンジニアの人たちなんですよね。
どういう風になっているかというと、バックエンドエンジニアと
マークアップチームがコラボレーションをして
一つの機能を作っていくと。そういった時に例えば
ウェブサービスがあってウェブページのある画面の変更をしようと
言った時に画面の変更が必要ですと。そういった時には
バックエンドエンジニアが変更をするんですけど
画面のユーザーに触れる部分に関してはマークアップチームがやる
みたいな分業がされている状態です。ちょっとこれについて
非常に文句というか文句しかないんですけど
その状態は一旦置いておいて、マークアップチームの人たちは
とにかく今、HTMLとCSSを
適用していく人たちなんですね。マークアップチームの人たちが
変更したコードをどうやって適用させるか
つまりマージさせていくかということですよね、プルリクエストを
バックエンドの人たちがレビューを行って
OKならそれをどこかマージするということをやるんですね。
とりあえずレビューしますということで
私とあとは私のチーム、最近入ってきた
すごく頼れるやつがいるんですけど、一緒にレビューをして
レビューしたわけです。そういった時に
色々指摘をしていく中で結構よく出てきたワードの一つが
この部分は他のサーバーサイドの人が書いたコードを
コピペしたものなので特に意図とかはなく
ただ書きました、みたいな。他のサーバーサイドの人が書いたコードを
コピペしたので知らないというような回答が一つのプルリクエストで2,3出てきまして
冒頭の共同所有というところにちょっと思いを馳せるわけですよね。
コピペするのは構わないんですよ。コピペするのは構わないんですけど
コピペした内容がどんな意図なのかわからない。でもコピペしましたって
自分で書いているのにまるで
オーナーシップを発揮していないのがどういうことなんだろうなっていう
言ってしまえば行き通りを覚えるわけなんですよね。
責任が感じられないんですよね。マークアップの人たちは
マークアップをするだけですっていう割には
サーバーサイドの人たちのコードをコピペしているわけなんですよね。
職務の境界っていうのがすごく違和感があるんですけど
06:01
それを置いといたとしてもマークアップとしてやらなきゃいけないことが
サーバーサイドの人たちが書いたコードをコピペすることなんですけど
コピペしたときに何やってるかわからないけどコピペしたって非常に怖くないですかっていうのが
一言あるんですけどコピペしたものだかわかりませんと
跳ねのけられましてもやもやというかもう行き通りを覚えているんですよね。
これどうしたもんかなっていう感じなんですよね。ちょっとこれ本当に
お説教しようかと思ったぐらいなんですけどちょっとやめときましたと。
ちょっと他のメンバーと喋って
した方がいいという意見もあればしない方がいいという意見もあって
しない方がいいという意見に私は傾けることに決意しました。
ちょっと前の私であれば多分言ってたと思うんですけど言わなかったんですよね。
なぜかっていうとそうですねどうせそういうこと言うと
マネージャーのところにエスカレーションされてそのマネージャー経由で私のマネージャーに行って
私がまたどうせお叱りを食らうっていう構図が見えているわけですよ。
どうせ嫌な思いをするなって思ったのとあとは
正直言ってそこでお説教するほど愛があるかっていうとないんですよね。
多分。冷静に考えてみると別にそこまで
コネクションがあるというかつながりがあるというかその人の
今後のキャリアを思ってみたいなところまでないなって思ったので言わなかったです。
これが結構信頼している人で
でも今だからこそこういうことを言わなきゃいけないって思うのであれば絶対に
言いたいんですけどそこまでの行動はないなって思って
言わなかったと。なんか悲しくなるんですけど
成人君子にはやっぱりなれないですね私は。いやーなりたいですよね本当は。
本当はもういろんな人と関わって自分と関わった人みんなもハッピーになってほしいみたいになればいいんですけど
さすがにそこまでにはなれないぐらいの行き通りを覚えてしまいましたし
教育じゃないですからね。教育っていうか
ある程度何かを教えるっていうのは必要かもしれないですけど
結局はプロフェッショナル同士のコラボレーションになるのでもうそういう態度取られたら
こっちで巻き取るしかないのかなっていうのは思いましたね。
これを言わないことによって本当に相手は
自分で言うのもなんですけどチャンスを失っているなっていう気はしています。
コード所有っていうプラクティスは本当にいいもので誰でも変更できるよ
だからこそみんなちゃんと責任を持つもんだよねみたいなところがあって
裏を返せばその責任を持ちさえすれば誰でも変更できるよ
誰でも変更できるっていうことは非常にスピーディーに問題を解決できる可能性があるんですよね。
09:01
だいたいどこのアプリケーションのコードベースも問題だらけなはずなので
誰かにお伺いを立てないと変更できない。もちろんコードレビューが必要だとは思うので
コードレビューという意味ではお伺いが必要なんですけど
そもそもこれを変更していいですかって聞くこと自体がどうなんだろうなと思います。
そういう点でやっぱりコードの共同所有っていうのは
アジャイルのプラクティスとして一つ挙げられるぐらい
重要なプラクティスなのかなとは思います。
コピペ。途中で言いましたけどコピペ自体は問題ないんですよね。
ただコピペする時のコピペ対象ってどんなものなんでしょうねと。
何の意図を持ってコピペしてるんでしょうねと。
そもそもコピペする対象は何なのかちゃんとわかってますかねと。
コピペするなら全然コピペすればいいと思うんですよ。
でもその中身わかってなくてコピペとかはそれはそれでそうですね。
マインドセットとしてはあんまりよろしくないかなとは思いますが
まあこれをいいと思っている人もいるんですかね。ちょっとわかりませんが。
こんな感じでもう喋っていると結構なお時間になってしまったので
そろそろ終わりにしたいと思います。それではまた。
10:27

コメント

スクロール