どうも、ちゃんなるです🐻
最近身の回りでたびたび「フルサイクル開発」と聞くようになりました🖐️
恥ずかしながら、初めて耳にしてからすぐには調べてはおらず、ソフトウェアエンジニアをまる2年やっているのにわかっていませんでした💦
なので、今日はこいつをまとめます。
概要
フルサイクル開発とは、ソフトウェア開発ライフサイクルの全ての段階において、設計、実装、テスト、デプロイ、運用、サポートまでを担う開発スタイルを指します。
フルサイクル開発者は、開発ライフサイクルのあらゆる場面で、手動で行われていたものを自動化していきます。これにより、本質的な価値提供にほぼ全てのリソースを向けることができ、開発アジリティの向上と開発チームのスケーリングを実現します🔥
また、フルサイクル開発者は機能拡充だけでなく、DevOpsの理解と実践もすることになります。開発者の視点で問題を評価し、自分たちが開発したものを運用することによって、より良いプロダクトを提供し続けることにつながります👍
フルサイクル開発の意義
意義は、「全てのソフトウェアの開発サイクルを担当することで、より高速でプロダクトをリリースすることができること」です。
フルサイクル開発者は、設計、実装、テスト、デプロイ、運用、サポートまでを担当するため、分業による手間やコストを排除することができます。フルサイクル開発者によって構成されたチームは、より高速でプロダクトをリリースすることができるため、ビジネスに貢献することができます。
下記は実際に「フルサイクル開発」を体験されている方の意見です。
前職は企画やインフラというように分業された環境でしたが、自身の好奇心からフルサイクルに近い動きをしていました。だからこそ分かるのですが、分業状態だと依頼などでどうしてもコミュニケーションコストがかかります。フルサイクルな開発の意義の一つは、そうしたコストを排除することによるスピード感だと思います。*1
確かに、コミュニケーションはコストがかかります。その一方で、それが計測しづらく開発リソースへの影響が軽視されがちだと私は日頃感じています…。
なので、コミュニケーションコストを削減できるという点で「フルサイクル開発」は魅力的ですね✨
メリット
- 分業による手間やコストの排除と、それによる高速かつ高品質なプロダクトリリースができる。
- DevOpsの原則を深く理解し、開発者視点での問題評価によってサービスの改善ができる。
- 各開発チームが小さな責任範囲を持ち、他の機能との依存関係を気にせず開発が進められる。(そのため、たとえばマイクロサービスアーキテクチャで分かれた機能ごとのチーム編成が可能ですね)
デメリット
- スキルセットの要求が高く、多岐にわたる知識と経験が必要で、適切な人材の確保が難しい。
- 個々の開発者が多くのタスクを担当するため、負担やストレスが増加し、バーンアウトのリスクが高まる(これは主観ですがサステナブルでなく深刻な問題だと感じます👀💦)。
- 少数の開発者が全てのフェーズを担当するため、専門的な知識が欠けたり、特定の分野での最適解が見逃される可能性がある。
まとめ
フルサイクル開発は、開発者がソフトウェア開発ライフサイクルの全ての段階を担当する開発スタイルで、プロダクトの高速リリースやコミュニケーションコストの削減が期待できる一方で、人材確保の難しさや開発者の負担増が懸念されるデメリットもあります。
しかし、フルサイクル開発は開発アジリティの向上やビジネスへの貢献を実現することができるため、チームや組織にとって大きな魅力がある開発スタイルです。
導入を検討する際には、開発者のスキルセットやチームの構成、開発フローを慎重に評価し、組織のニーズに合った最適な取り組み方を見つけることが重要です。
また、バーンアウトのリスクを軽減するために、開発者のサポートや継続的な教育を行うことが不可欠です。
最後に、フルサイクル開発は、DevOps文化を推進することにも繋がります。
開発者が自分たちが開発したものを運用することで、問題の早期発見と解決ができ、サービスの改善を促すことができます。
このように、フルサイクル開発は、現代のソフトウェア開発において、新たな可能性を提供する重要な概念となっています✨