リモートでDDDの社内勉強会を開催した話
はじめに
この記事はチームスピリット Advent Calendar 2020 の21日目の記事です。
2020年ももう終わりですね。
今年はコロナの影響で、ほとんどの期間をリモートワークで過ごしました。
今更ながらリモートワーク、難しいですよね。
通勤電車に乗らないことがとてもストレスフリーだと感じたり、個人の作業は集中できてとても捗るなと感じる一方、顔を合わせて相談したいと思うことがあったり、孤独感を感じることがあったりなどメリットデメリットが色々あるなぁと思った1年でした。
この記事では、そんなリモートワーク期間に社内の勉強会を開催してみた話を記載してみようと思います。
・・・
何の勉強会をしたのか
ドメイン駆動設計(DDD)についての勉強会をしました。
きっかけ
社内のプロダクトでは、初期段階から既にDDDを取り入れた開発をしていました。
しかし開発を進める中で、既存コードに対してこの設計は本当にDDDなのか?DDDっぽい実装になっているだけでは??.....いやDDDって結局何??と思うようになりました。
これは自分個人の学習不足はもちろんありますが、メンバー間のDDDの理解度に差があることや、既存コードの設計の解釈についてもチーム内で統一されていないことが原因の一部だと思いました。
上記のもやもやを解消したいという思いから、リモートワークで通勤時間がなくなった今がチャンスだと思い、長期間に渡り朝1時間の社内勉強会を実施しました。
勉強会の題材
以下の書籍を使用しました。
この本ではDDDの目的から実践方法まで、初学者でも理解しやすいように解説されており、大変参考になりました。。
・・・
勉強会の進め方
4月から9月まで週1回、9:00~10:00の時間で勉強会を実施しました。
最初は自分を含めた参加メンバーが、朝の勉強会に参加できるのか不安でしたが、リモートワーク前は通勤している時間帯だったので皆余裕そうでした。(明日本当に起きれるのか...という不安と戦った夜もありました)
勉強会の時間の使い方はとてもシンプルで、以下の2つを繰り返しました。
①区切りの良いところまで各自で読む
②読んだ箇所について議論をする
また議論をする時に個人的に意識していたことは以下でした。
議論に置いていかれている人はいないか?
メンバー間のDDDへの知識の差を少なくすることが目的の1つだったので、なるべく不明点や疑問点を無くして、全員で理解を深めたいと思っていました。
プロダクトのコードではどこが当てはまるのか?
書籍はとてもわかりやすいので、読むだけでも「ふむふむ、なるほど」と感じてしまうのですが、実際に開発プロセスやプロダクトコードに反映させるためにはどうすれば良いのかをセットで考えることで、学んだ内容を実践しやすくしたいと思っていました。
・・・
勉強会を実施した感想
良かったこと
勉強会を通してDDDの基本的な考え方を理解でき、既存コードの問題点や改善点について、メンバー間の意識が揃ってきたという感覚があります。
実際にその後の開発においては、まだ学んだことを全て実践できているわけではないのですが、設計についての検討をする際には以前よりもスムーズに議論ができている気がします。(設計スキルのベースラインが上がった気がします)
また個人的には、ファシリテーターとして毎回ある程度予習をしていたので、その場で読むよりも知識が刷り込まれた気がしました。
大変だったこと
とても緩い勉強会ではあったものの、勉強会の主催というものが初めてだったので、毎週参加者に満足してもらえているのかが不安でした。
また業務が忙しい時期だと、自分が欠席してしまったり中止にしてしまうこともあり、申し訳ない気持ちがありました。
DDDについて理解が深まったこと
(すみません、ここはたくさんあるので別途DDDの記事を書きます)
反省したこと
踏み込んだ内容になると、前提知識に差があり議論に置いていかれている人がやはり出てしまいました。
最初はそうならないように手助けをしようと思っていたのですが、自分も理解するまでに時間がかかっていたことや、理解しやすい良い説明ができなかったことなど力不足なことを感じました。
上記のことは勉強会だけでなく普段の会議などでも頻繁に起き得る事象なので、置いていかれている人がいないかという視点で話を進めることは今後も意識していきたいと思っています。
・・・
まとめ
リモートワークで通勤時間が0分になったことを利用して、朝に勉強会を開催してみた話でした。
勉強会の具体的な内容というよりも、初めて勉強会を開催してみたことの感想がメインとなってしまいましたが、年末に振り返ることができて個人的にはとても良かったです。
最後まで読んでくださりありがとうございました!