34:一度に実装する範囲を小さくしよう¶
プログラミング迷子: 一気に遅れを取り戻すためにタスク分割を省略?
先輩T:SNS連携の実装って今どうなってる? なかなかレビュー依頼が来ないけど何かハマってる?
後輩W:SNSへの通知機能、予定より遅れていますが、もう1週間くらいかかりそうです。
先輩T:え、どうしたの、けっこうかかってるよね。
後輩W:SNSの認証が必要で、そのライブラリの使い方に手間取りました。コメント欄にSNSに通知するための機能がまだ途中で、ここにもSNSのメンションの自動補完が必要だし、あと、連携解除する機能が必要なこともわかったのでそれも……。
先輩T:ちょっとまって! それだとやることが増えていって、いつまでも終わらなそう。だから、全部別々に分けてレビュー依頼しましょう。 機能の粒度 が大きくて、作るのもいろいろ考えることが多くて大変だよね。
後輩W:はい、実はすごい大変で……。
先輩T: 大きいチケットは分割しよう 、っていうのはこのあいだ『Pythonプロフェッショナルプログラミング』 [1] 5章の「チケットを分割しよう」を読んで納得してたと思うんだけど、今回はどうして分割できなかったの?
後輩W:粒度が大きすぎるのは認識していたんですが、もう遅れているので 分割に時間かけてる場合じゃない と思って……。
先輩T:なるほど、一気に実装して遅れを取り戻そうとしたのか。
SNS連携のような機能を実装する場合、見た目はSNSに投稿するだけの簡単なものでも、内部ではOAuth等による認証が必要だったり、トークンをデータベースに保存しておくといった 多くの前準備 が必要になります。 こういったコードを書いたことがないと、実装にどのくらいの時間が必要なのかの 見積もり ができません。
(中略)詳細は書籍 自走プログラマー をご参照ください
ベストプラクティス¶
一度に実装する範囲を小さくしましょう。
「SNS連携機能」のような一言で済む機能であっても、実装する内容は多岐にわたります。 あるいはちょっとした機能だと思っていたものでも「実装し始めると芋づる式にやることが増えていく」というのはよくあるハマリパターンです。 あれもこれも、と手を広げる前に タスクばらし をしましょう [2] 。
『管理ゼロで成果はあがる~「見直す・なくす・やめる」で組織を変えよう』(倉貫義人著、技術評論社刊、2019年1月)または著者のブログ記事 https://kuranuki.sonicgarden.jp/2016/07/task-break.html
(中略)詳細は書籍 自走プログラマー をご参照ください