今夜がλ

夜だけプログラマー

一人開発とチーム開発のメリット・デメリット

先日、面接で『一人で開発するのと、チームで開発するのとではどちらが好きか』という質問を受けた。

特にどちらが好き、ということを考えたことはなかったが、改めて考えるとシステムの内容によって変わってくるな、と感じた。

チーム開発を行った場合、下記のような作業が増える。 ・コード規約の作成 ・コードレビュー

それだけ考えると、一人で開発する場合は他人のコードにヤキモキすることもないし、自分のコードの正当性を主張する必要もない。

ただし、大きいシステムの場合は一人で開発すると途端に属人化する。

システムの理想形は(プログラムを読むことができる人なら)「誰でも読めて、理解できるコードで構成されていること」である。 つまり「属人化の回避」だ。

「属人化の回避」を一人でやろうとすると、システムが複雑になるにつれてとんでもなく難しくなってくる。 レベルの低い人に合わせて、出来るだけ短く書き、単純化する、ということが一人でできる人はほんの一握りなのではないだろうか。 一般的なテックリードレベルのプログラマーであれば、複数人で意識や感覚を共有し、他の人間が自分のコードを見てどのように感じるのか、ということを客観的に読み取る力が必要になる。

私の場合はそういった客観的に読み取る力が今のところないので、ある程度複雑なシステムを作る場合であれば、様々な人のコードをもとに様々な人の意見を抽出しながらチーム開発を行う方が、比較的容易に属人化を防げるのではないかなーと。

そう考えると、現在プライベートで行っているapp-guildのチーム開発は自分のためになっている気がする。