選ばれた一人の開発者
日々の開発の退屈さに追いつかれることがある。
数え切れないほどの小さな判断。そのほとんどは、間違いなく取るに足らないもの。そして残りも、おそらく取るに足らないもの。
それでも私たちは「正しく™」やりたいと思う。
そして、とりわけ大胆な人は、他の人間と一緒にそれをやろうとする。
新しいプロジェクトに取りかかったとき、膨大な量の選択肢に押しつぶされた経験がある人なら、どれほど無駄な議論が発生するかを知っているだろう。
1つのリポジトリで進めるべきか、それとも複数に分けるべきか。
ディレクトリ名はXにするかYにするか。
ファイルの末尾に改行を入れるべきかどうか。
その多くは本当にどうでもいい選択だ。
組織的にも、ビジネス的にも、エンジニアリング的にも、教育的にも価値がない。
時間の無駄だ。
一人でプロジェクトを開発しているときには、そんな議論は存在しない。
チームは自分自身。
自分の好みに合わせてすべてを整える。
それは速く、簡単で、癒やしそのものだ。
だが誰かと一緒にプロジェクトを始めると、その細かいことが一気に煩わしくなる。議論を自由にさせてしまえばなおさらだ。
では、議論を奨励すべきなのだろうか?
多くのプロジェクト、特に新しいものは「選ばれた一人の開発者」を置いた方がうまくいくのではないかと思い始めている。
他の人の貴重な時間を生産性のない議論で浪費させるのをやめよう。
選ばれたその人に決断の重圧を背負わせ、他の人たちは実際に仕事を進めることに集中すればいい。
もちろん「選ばれた開発者」が、より多くの情報を求めて判断を下すべき場面もある。
選ばれた立場にあるということは、必要なときには助けを求める経験と洞察を持っているということだ。
だがそういうケースは、私たちが認めたがらないだけで、実際にはずっと稀だと信じている。
一見すると、このモデルは長期的なメンテナンスには向いていないように見えるかもしれない。
選ばれた開発者が飽きてしまったり、プロジェクトをやめてしまう可能性があるからだ。
確かに、役割をすぐに引き継げる仕組みは欠かせない。
しかし、それは「選ばれた開発者」がいなくても必要なことで、このやり方なら準備を早められるかもしれない。
なぜなら、交代が避けられないものとして組み込まれるからだ。
私が「選ばれた開発者」という考えに惹かれる理由は、失敗への恐れにある。
もし自分がプロジェクトの責任者なら、コードとプロセスを完全にコントロールしたい。
しかし単なるコントリビューターとして新しく参加する立場なら、私が求めるのはむしろ取引だ。
自分の書いたものを、きちんと分かっている誰かに委ねたいのだ。
これが非常に自己中心的だという自覚はある。
結局のところ「自分のやり方」か「責任放棄」しか選ばないということだから。
それでも、この仕組みなら心理的な意味で安全だと感じられる。
他にも同じように感じるエンジニアは少なくないはずだ。