プロダクトを開発する上で他の会社がどのように開発していて成功しているか、その成功をどのように自社の成功に結び付けれるか気になるところです。
今回は開発プロセスについてドキュメントが豊富にあるGitLabを取り上げGitLabのソフトウエアがどのように開発されているか概要を紹介します。
GitLabはDevOpsのプラットフォームです。ソフトウエア開発をしたことがあれば名前を聞いたり使ったことがあるかもしれません。GitLabと名前にgitがついていることからもわかる通り、ソースコードをgitでホスティングしておりそれに付随して開発にまつわる様々な問題を解決します。
GitLabは会社運営にまつわるほぼすべてのことをHandbookとして公開しています。そのページ数は2000ページ以上。ソフトウエアの開発プロセスはProduct Development Flowとしてまとまっています。
https://about.gitlab.com/handbook/product-development-flow/#workflow-summary
開発プロセス概要は上記のようになっています。大きく以下の2つのパートにわかれています。
一連の流れをIssueを通じてコミュニケーションしています。Issueは解決したい問題(Title)と背景や解決方法(Description)が記載されています(その他にラベルなど多数の属性が追加できます)。開発プロセスの中でそれぞれのステップで検証したことを記載します。メンバがIssueにコメントして問題や解決方法に対して議論することもできます。
GitLabはこのIssueをSSOT(Single Source Of Truth)、ただ1つの正しい場所として扱っています。同じことが2つ別々に書いてあったり、このIssue以外のところにこのIssueについてのことの仕様などが書かれないようにしています。複数の場所に散らばっているとメンテナスが大変(実際はメンテされなくなる)だからです。GitLabはこのSSOTということと、ドキュメントにするということを非常に大切にしている会社です。
また開発プロセスは小さなバグなど問題を検証する場合がない場合は、適宜スキップしてもいいとかいてありました。実際上の効率を重視しているからです。