試しに始めた輪読会が意外と盛り上がったので記事にしました。
概要
- 題材
- SQLアンチパターン
- メンバー
- 業界2~3年目のエンジニア
- 業界はSIerとWeb
経緯
元上司にSQLの知識が乏しい事を相談したら同じ様な仲間募って輪読会
してみれば?
って言われたので単純な僕は早速仲の良いメンバー(社外)を集めてSQLアンチパターン
の輪読会を始める事にした。
メンバー
- ナミザト(筆者)
- 3年目 SQLは幼稚園児と同レベルの知識
- ボンバーさん
- 3年目 SQL分かる
- ゆいさん
- 2年目 SQLふんわり分かるけど曖昧な所もある
- ハルさん
- 2年目 業務で書くけど分からない事も多々ある
目的
- 完璧な設計が出来ずともアンチパターンを避けた適切な設計が出来る様になる(または考えられる)
- アンチパターンだけでなく、DBに関する理解が浅い部分を恥ずかしがらずに質問して皆んなで理解を深める
- 自分だけで理解して終わるのでなく、皆んなが納得するまで議論し、共通認識を高める
- 何となく理解していたつもりでいた知識を言語化する事で自身の本当の理解度を認識する
今回の目的にアンチパターンの理解だけでなく、DB関連の理解も深めたいというものがあるので普通の輪読会とは少し違うかも...。
本題
SQLアンチパターンは章区切りでそれぞれアンチパターンが説明されていて、アンチパターンで設計をした場合にその設計が如何に柔軟性に欠けているか、いくつかの例が出てきます。
そして章の最後に相応しい設計で解決方法を紹介するという内容になっています。
その分かなり分かりやすくまとめられているので、内容に対しての議論するのは難しいなと思い、別のアプローチ方法を考えた。
輪読から議論までの流れ
- 皆んなで同じ章を読む(1回の勉強会で1章ずつ進める)
- 輪読する時間を決める
- 輪読していく中で
疑問
感想
提案
質問
自分用メモ
を付箋に書き綴る - メモした付箋を共有のホワイトボードに貼り付ける
- 付箋を1つずつテーマとして上げて議論する(または知ってる人が教える)
1.皆んなで同じ章を読む
これは輪読会では当たり前だが、共通の章を同じペースで読み進める。
そうじゃないと議論もクソもないからね。。
まずは第1章のジェイウォーク
から読み始めました。
2. 輪読する時間を決める
だらだら読むのは良くないと何処かの記事で書かれていたので、30分という時間を決めて1章をそれぞれで読んでもらいました。
今回のSQLアンチパターン
は1章10P位なのでちょうど良かったが、本に合わせて時間を調整するのが適切です。
3. 輪読していく中で疑問
感想
提案
質問
自分用メモ
を付箋に書き綴る
これが今回一番大事で議論をするための材料を用意するのではなく、自身の気付きや疑問を簡単に付箋に描いてもらった。
なぜそんな事をしたかというと、基本技術書などは課題に対するまとめがあり、それで完結してしまうんです。
そのため議論をするための材料探しというのは、中々捻り出せないものなのです。。
なので、議論に重きを置いた今回は質より量で攻めるやり方を取りました。
4. メモした付箋を共有のホワイトボードに貼り付ける
3で集めた付箋をホワイトボードにジャンル毎に分けて共有しやすい様にしました。
5. 付箋メモを1つずつテーマとして上げて議論する(または知ってる人が教える)
4で貼り付けた付箋メモをジャンル毎に進行者(執筆者)がテーマとして発表して、
それに対して各々の意見を語り、議論するという流れで進めました。
皆んなで写真撮るの忘れた
付箋メモで上がった議題の一例
- 5~10人までしかユーザが登録できないなおかつ登録した時期によって変動するという問題に対して
- なぜ5~10人までなのか(ナミザト)
- 10人超えた時にどうなるのか(ナミザト)
- 登録した時期によって変わるのはなぜ?(ハルさん)
- 適切な設計の時に出てくる参照整合性とは?(ゆいさん)
- 外部キー制約って?(忘れた)
- indexを貼る理由は?またはどういう意味?(ゆいさん)
などなどアンチパターンというよりDB関連の議題の方が多かったです。
本来の輪読会であれば逸れた質問に分類されると思いますが、今回はDBの知識も深めたいという名目もあるため
あえて幅広く出してもらいました。
輪読会を通して気付いたこと
- 本を読んだつもりになっている
- 自分の認識と皆んなの認識が違うことがある(または誤っている)
- 理解しているつもりでも人に説明できるほど理解していない
- 話が逸れがちなので軌道修正する人が必要(僕らだけかもしれないが)
結果
今回の題材「SQLアンチパターン」のジェイウォーク
に関する議題というよりはDB関連の議題が多く出ました。
もちろんジェイウォーク
に関しても図で書きながらみんなの共通認識を擦り合わせて、齟齬が出ないようにしたので「皆んなで理解する」という意味ではクリア出来たかな?という感じでした。
次回はちゃんとアンチパターンの議題も出せるようにレベルアップしていきたいですね。
反省点&改善点(気付き)
- 仲良い人同士で無いと意見を出しづらいかも
- 初対面の人でもディスカッションしやすい雰囲気作り(課題)
- もっとテーマを出す
- アンチパターンについてもう少し議論出来る様にしたい
- ある程度SQLに精通した人が居ないと詰む
- MAXでも5人くらいが丁度いい