はじめに
本記事はモブプロ開発を行っているチームでやっている取り組み Advent Calendar 2022の15日目の記事です
今回もチームで行っているユニークな指導として「ToDoリスト」を紹介します
え、ToDoリストくらいわかる?たしかにほとんどの方がToDoリストをつくられているかと思います。
新人の方も多くの方が作って仕事をしているのを知っています。しかしながら、そのToDoリストをプログラミングに落とし込んでもらうと多くの新人の方がうまくできません。
この能力を鍛えることで、実装力の向上や見積もり精度の向上、1人で実装する能力、テスト駆動開発の能力などが早く着くようになります
本当にいいとこどりなので、私のチームでは力を入れて取り組むようにしています
Chapter#14 実装できる未来見えてる?
アール「テスト駆動開発やはり難しいですね」
ベープ「そうですね。何をまずテストすればいいのかすらわかりません」
アール「私なんて皆さんがやろうとしていることすら、なぜそれをいまテストで書いているのかわかっていないのでひたすら質問時間になってます」
じん「質問時間とることはまったく悪いことではないので気にしなくていいですよ」
ミュート「それに比べてじんさんは割とすらすらテスト書いている気がしますが、初めからそんな感じだったのですか?」
じん「いえいえ、最初は皆さんと同じでしたよ。テスト駆動も実装力も鍛えればすぐ向上します!」
アール「鍛えるってじんさんみたいに休日色々開発したりしないとってことですよね」
ミュート「いやー、時間とれないんだよね」
じん「いえいえ、そういえばそのお話してませんでしたね。やることは簡単です。質の高いToDoリストを作れるようになるだけです!」
ベープ「ToDoリストなら私も作ったことありますけど、システム開発でもやるんですね」
じん「では、まずは今回開発するログイン画面のToDoリストを皆さんに作ってもらいます」
こうして、それぞれが思い思いのToDoリストを書き始めた
質の高いToDoリストとは
今回は新人教育やテスト駆動開発を導入する際に最初にマスターしてほしい、システム開発における「ToDoリスト」について紹介します。
ToDoリストは皆さんが知っての通り、やるべきことを箇条書きにしたものです
そのToDoリストですが、私たちのチームでは実装する項目に対して粒度が小さいToDoリストを書くように心がけています
例えば以下の画面を作成するとします
これは簡単な動画アップロードのページになります。すべてReact(TypeScript)で実装する想定です。
ここで質の高いToDoリストが作れない方(新人やテスト駆動開発未経験者)は以下のようなToDoをつくります
- 動画アップロード画面を作る
- ボタンを押したらファイルが選択できる
- ファイルを選択するとAWSに動画をアップロードする
これではまったく実装する方法が伝わらないですし、テストを書こうとしたときに項目単位でテストをすることができません
私たちは少なくとも以下の粒度で書くようにしています(実際はさらに細かいです)
- カード作成
- タイトル配置
- ドラックドロップゾーン作成
- ボタン配置
- ボタンを押したらファイルが選択できるようにする
-
ファイルを選択したらAWS SDKをAxiosで実行する
- アクセスキーがなければエラーが出る
- シークレットアクセスキーがなければエラーが出る
- アップロード処理が始まったらローディングのスピンが出る
- マルチパートアップロードを行う
-
終わったらローディングが消える
- 成功なら成功のメッセージを出す
- 失敗ならエラーメッセージを出す
このようにコード単位で細かく何を実装するかをToDoに書くことで、項目単位でテスト駆動を行えます
また、1行ごとに工数を見積もることができるので大雑把な見積もりから卒業できました
そして新人にはなるべく最初のToDoリストを作らせるようにしています(アールさんは事前に書いてくれてました)
作成してきたToDoリストをメンバー全員で添削してから見積もりに入るのがプランニングの流れとなっています
このToDoリスト作成ですが新人にはなかなか難しいので最初はボロボロになったり、実装終わりまでが見えないという状況になりますが徐々にできるようになるはずです。
まさに成長です!!
今回はシンプルにはなりますが、システム開発においてのToDoリストについてのご紹介でした
始めは時間がかかりますが、メリットがとても大きいのとテスト駆動開発やモブプロには相性が良いのでぜひ試してみてください!
おわりに
ToDoリストはいままでやった取り組みの中で身近でもやっているけど、真剣にやると効果が絶大だととても感じた取り組みでした
新人が初めに学ぶべきと個人的に思っているのは
- ToDoリストができる
- 検索ができる
- デバックができる
- 公式ドキュメントを読む力
- ショートカット
だと思っています。いまのところToDoしかこれをやれば能力向上できるというのが見つかっていないので今後も模索していきたいと思います