git flow やってみた

今の会社に入ってから、git flow で開発をしている。
個人的には github flow の方が好きなのだが。。。

git flow と github flow の何が違うのか。
簡単に言うと「どこまでマネージメントするか」、「どこまで個々のプログラマの自主性に任せるか」っていう事だと思う。

当然、github flow の方が git flow よりもプログラマの自主性が高い。
そのため、プログラマからしてみると git flow は管理されている感が強いだろう。
また、git flow だと管理する側が「管理する」という工数が増える。
そういう所が、自分が git flow をあまり好きではない所だ。

一方、git の運用方法はそのプロダクトの品質に間接的に関わってくる。
品質とは、バグ、セキュリティ、応答速度、スケーラビリティ、拡張性、オペレーション、ヒューマンミスの発生しにくさ等である。
そして、システム全体の品質とは、そのシステムの一番低いところで決まることが多い。
バグがなく、応答速度が早くて、スケールして…という一見して素晴らしいプロダクト出会っても、セキュリティがズブズブであればそのプロダクトの品質は低いのだ。

git の運用方法はバグやセキュリティホールの改修速度、リリースバージョンの安定性等に関わってくる。
つまり、プロダクトの品質へ間接的に関わってくるのだ。
(もっとも、過去の履歴がどうであれ即座に修正してしまうスーパープログラマにお任せするのであれば、git の運用方法なんて関係無い。
なので、「間接的」と書いた)

そして、git の運用方法もまた、開発者の最低ラインが全体のレベルに関わってくる。
git flow は開発者間の git の運用レベルに差がある場合、最低ラインを引き上げる良い方法の一つだ。

なので、結論
プロダクトの品質の最低ラインが改修速度やリリースバージョンの安定性であり、
その改善に際し個人技に頼りたくない場合は git の運用方法がプロダクトの品質を決める事がある。
そのような場合、git flow を導入する事でプロダクトの品質が上がるかもしれない。
逆に言うと、それ以外の場合は git flow なんて導入しても無駄な気がする。

個人的には、わざわざ git flow を導入するよりも一定レベルのプログラマと仕事したい。
それが無理なら、運用で縛るよりも教育したい。
そんな事を思いつつ仕事をする今日このごろ。