1人でプログラミングするのと2人以上でプログラミングする事の話

2021年12月30日

学習

eyecatch もっぱら1人プログラミング派の、ユゲタです。 前から「チーム開発がうまくいかない」と悩んでいるWEBサービス会社の開発部長などから、愚痴を聞かされることが多いのですが、 アジャイル方式を導入してみたり、ペアプロ方式をやってみたり、メンター方式の構成にしてみたりしても、 どれもなんかうまく行かず、ダメなのだそうです。 僕から言わせると、そういう事を色々と試行錯誤しながらやっていること自体がすごいな〜と思って聞いているんですが、 こうした話は、もしかしたら多くの会社で悩んでいるポイントではないかと考えて、今回はそうしたチーム開発について思考してみたいと思います。

一人開発と二人開発の大きな違い

当たり前の事ですが、プログラミングってほぼ一人で開発をするものなので、一人開発って「当たり前」の事なんですね。 それが二人になると、「コンフリクト」問題という、同じプログラミングのコードを同時に触ってしまい、結果的に不具合につながるという事になる場合が多くあります。 また、別々のプログラムコードをそれぞれ役割分担で行っていても、意思疎通がしっかりとできていないと、「結合」作業の時に、うまく機能しなかったりもします。 じゃあ意思疎通がしっかりとできていれば大丈夫なのかというと、ある程度小さなプログラムであれば、声を掛け合いながらでなんとか乗り越えることはできると思いますが、 大掛かりなwebサービスを開発しようとした時には、おそらくそうした力技では乗り越えられない場合があることに気がつくでしょう。 ユゲタが気がついたチーム開発のポイントは、先導者がいるかどうかというチーム構成です。 先導者というのは、リーダーの事で、オーケストラで言うところの指揮者です。 ペアプロで二人開発がうまくいくのは、どちらか片方がメンターの役割になっている場合で、同レベルのエンジニアが、ぶつかり合いながら開発すると、途端に破綻してしまいます。 そういう指示出し役の役割がいるかどうかで、チーム開発ってうまくいくかどうかが決まってきます。

リーダーの存在

会社組織になっていれば、複数人いる開発チームの誰か一人をリーダーなり、部門長なり、CTOというポジションに任命されていると思いますが、 その人が大きなキーポイントになるということは明確なんですが、とある会社の友達のCTOから、相談を受けて、開発がうまく進まないということで中の開発チームメンバーと面通しをさせてもらい、 どうすればいいかということで返答をさせてもらいました。 ちなみに、その会社は、B2C型のWebとスマホアプリサービスを展開している会社で、会社全体で40名ほどの従業員数。 開発員の主要メンバーは、CTOを合わせて6名程度で、 それぞれ、インフラ担当、バックエンド担当、フロントエンド担当、デザイナー担当、SEOなどの管理担当、 という構成で、全員が、開発に必要な重要部分を担当しています。 そして問題となっているのが、CTOがそれぞれの担当の内容を細かく理解しきれておらず、サービス自体は大きく肥大化して、 これまでの積み重ね開発でリプレイスを考えて入るものの、次から次へと来る要望や、様々な仕事の依頼で、メンバー全員が「忙しい」の連呼で日々消耗しているという状況のようです。 この場合、CTOがリーダーなんですが、担当箇所が違うそれぞれの担当者が、担当部門のリーダーという扱いになっている感じになっています。 ようするに、現時点で、全部門で一人開発を行っているようなモノなんですね。 それを集約するCTOというものは機能しているのですが、それぞれの部門に採用などを行い人員を増やたいという相談も兼ねていたんですが、 ユゲタの伝えた内容は、「採用したら破綻する可能性がある」という感じでした。 おそらく、採用したあとで、その人を教育する手段が何一つ用意されておらず、おそらくは、放ったらかしにするか、その担当箇所のやることを、ググりながら、実際のソースコードや環境を見て学習させる事になると思われます。 事実、次の4月に入社する予定の新卒採用というのが一人だけ決まっているようなんですが、週に一度インターンで出社していて、やっている内容は、TypeScriptの書籍を読みながら、NextJS環境の学習をしているというモノで、 インターンというよりは、学習塾のようになっているようです。 他の担当箇所もかなり悲惨で、ドキュメントはほぼ残っておらず、過去の履歴などが終えるものは、現時点で動いているサービスのみ。 おまけに、今やっているのは、カッコの遺物をひたすら整理する作業に追われて、新しい仕事はそれの上塗りをする程度で進めているのだそうです。 言い方が悪く聞こえるかもしれませんが、5年以上同じサービスを続けていると、よほどしっかりとしたチーム構成など、リーダーが長けていないと、多くの会社がこの様な自体に陥ることは、 過去に何社も見てきて、サービス開発の宿命と考えても良いかもしれませんね。 そんな時にやはり名ばかりではないリーダーという存在が重要になるということがよくわかります。

リーダーの素質

誰もが当たり前に重要だと思う、リーダーという存在ですが、いったいどういう素質を持っている必要があるんでしょうか? もちろん、人として優れていて、チームメンバーや、作業内容などを引っ張っていく必要があるし、 なにか問題があれば、その解決方法を自ら見つけ、メンバーに指示をして、解決させる事ができるという事が求められるんですが、 逆に考えると、その思考がない人をリーダーにしたとしたら、とんでもない進行の遅いチームが誕生してしまいます。 会社としてのチームであれば、経営メリットが考えられないといけないし、大きな組織の中のチームであれば、その組織内での振る舞いにも気を使う必要があります。 「中間管理職」として、嫌われる一面もありますが、リーダー気質のある人は、ここに、やりがいを見出す人も多いということも言えます。 残念な会社というのは、こうしたリーダー気質のある人がいない(または自分で気質があると勘違いしている人がいる)という場合です。 もはや手がつけられなくて、ユゲタは、ご遠慮させていただいているんですが、こうしたケースの場合、こちらが提案するような内容をハナから否定して、社外の話に対して聞く耳を持たない傾向があります。 もっと根本的なことを言うと、経営者は、こうしたリーダー気質について見極める事も経営の重要な要素であると認識しなければいけません。 かなり運任せのように思えますが、経営リーダーがしっかりしていれば、自ずとしっかりとした人とつながるというモノなので、 人がうまく集まらないと嘆いている経営者の人がいたとしたら、「仕事をしていない」と考えてあげるようにしています。 さあて、ユゲタは、今日もちゃんと仕事をしようっと!

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。