どうもSuです。
ソフトウェア開発を20年くらいやっていますが、それでも毎日「学び」や「発見」があり、まったく飽きない日々を過ごしています。今の環境に感謝ですね。
さて、今日は「開発スピードがなぜ重要なのか?」について、自分の意見を書いていきたいなと思います。
「開発スピード良くたって、内容が雑じゃだめじゃん!」、「スピードより、まずは丁寧にコードを書くことが大事だよ!」という声が聞こえてきそうですが、そういった点も踏まえて書いていきたいなと思います。どうぞ、お付き合いください。
開発スピードを早めるとは?
私が言う開発スピードを早めるとは
開発者がある機能を開発し始めてから、一通りの機能が動く状態にする時間をできる限り短くすること
です。
どれくらい早くかというと、4週間の開発期間があった場合は、1週間~2週間くらいで一通りの機能が動く状態にすることです。
開発スピードを早くすると何が良いのか?
1) 疑問点が洗い出される
開発終盤になって、「あれ、この実装をしていたけど、ここってこれでいいんだっけ?」という疑問が出たことはないでしょうか?
残りの開発期間が短い中での、このような疑問は焦りを生み、間違った仕様や実装を引き起こす可能性があります。
開発スピードを早くすることで、疑問点を洗い出すことができ、余裕をもって開発を終わらせることができると思います。
2) フィードバックがもらえる(UI)
疑問点と同様に良くあるのが、「実際に作った画面見たけど、ここの文言おかしいよね」といったプロダクトオーナーや開発チーム内から出てくる「思ってたんと違う」ケースです。
単純な文言変更だけであれば良いのですが、「やっぱりこの機能は、ソートがないと機能として成り立たないね。ソート機能追加してくれる?」といった話になると、開発終盤ではその余裕がないでしょう。
泣く泣く「すみません、残りの開発期間では難しいです」と言う他なく、開発者もプロダクトオーナーもハッピーになりません。
早期にフィードバックをもらえるということは、不確実な仕様に対しての防御策になりうると思います。
3) フィードバックがもらえる(コードレビュー)
画面の動きを確認したフィードバック以外にも、コードレビューでの指摘もあると思います。より運用がしやすいコードを作り出すためには、コードレビューからのフィードバックと改善が欠かせません。
場合によっては、「全体の構成を大きく変えないといけない」ということもありますので、たとえリファクタリングが必要だとわかっているコードでも、早めにコードレビューを依頼し、フィードバックをもらうことをお勧めします。
4) リファクタリングに余裕が生まれる
たとえ開発時に冗長なコードがあったとしても最初の2週間程度でフィードバックをもらいつつ仕様が固まっていれば、残りの期間でリファクタリングは可能でしょう。テストコードがあるとよりリファクタリングにも安心して臨めます。
5) テストに余裕が生まれる
開発期間ギリギリに開発が終わると、テスト時間が短くなります。テスト時間が短くなるとどうなるかというと「正常系のテストパターンだけやって、後はQAに任せるか」といった雑な考えになる可能性があります。
実はこういうテストをしっかりやっていない部分に関してバグが発生したり、QAで指摘されたりするのですよね。
開発プロジェクト後半になればなるほど、バグが発生した時の対応コストは大きくなります。単体レベルのバグはしっかりつぶしておきたいですね。
6) パーキンソンの法則への対策になる
皆さんご存じかもしれませんが、パーキンソンの法則は「時間がたくさんある場合は、たとえ与えられた時間よりも短い時間で終わるタスクでも、与えられた時間を全部使うように行動する」という法則です。
例えば、「1週間くらいの実装で終わるタスクが、2週間の開発期間を与えられると、なぜか2週間を使い切って作業をしてしまう」ということです。
開発期間が長ければ長いほど、この法則のダメージは大きいです。
ですので、開発期間をできる限り短く設定し(実際に短い期間でできると宣言する必要はありません)、取り組むのが良いでしょう。
締め切りが短く設定した分、「余計な作業をしないで、集中することができる」というメリットも生まれます。
開発スピードを早くすると良くないことはあるか?
「開発スピード良くたって、内容が雑じゃだめじゃん!」と言われる
これは、私の尊敬する先輩なのですが、「開発スピードが早い上に、コードがきれい」です。読みやすく、理解しやすいコードを書いています。
「開発スピード」と「コードの品質」は反比例するものではないと思います。スピードが早くても読みやすい、保守しやすいコードを書くことは可能であると私は理解しています。
仮にコードが冗長で雑になったとしても、開発期間に余裕があれば、ゆっくりテストコードを書いたり、リファクタリングすれば良いでしょう。
「時間をかけて書いたのに、実は読みにくいコードになっていた」では目も当てられません。
「スピードより、まずは丁寧にコードを書くことが大事だよ!」と言われる
時間の余裕は心の余裕です。
「丁寧に書いたコードが、常に正しく、リファクタリングがほとんど必要ない」 と断言できるのであれば、時間をかけて丁寧にコードを書いても良いでしょう。
ただし、完璧なコードというものはなく、仕様が変わったり、コードの構成を大幅に変更しなければいけないことは多々あります。
不確実な未来を考慮しつつ、開発スピードを早め、迅速なフィードバックをもらい、「最速でお客様にサービスを届ける」と重視して開発していきたいですね。
最後に
普段の開発で意識している「開発スピード」について書きました。考え方の1つではありますが、アジャイル開発では、早く作って、早くフィードバックをもらうは、大事な考え方かなと思います。
この記事が役に立ったと思って頂けた方は、「Amazonリンククリックのみ(購入不要)」で構いませんので、ポチっと応援していただけるとうれしいです。