アトラシアン本社の情報サイト『WORK LIFE』から新着コラム。アトラシアンのソフトウェアエンジニアであるマイケル・ケンプ(Michael Kemp)が、開発チームが「納期駆動」に陥っている10の兆候についてまとめた。本記事では、前編に引き続き、残り5つの兆候と、この問題を解決するためのより高次なアイデアを紹介する。

兆候6: チームの全員がストレスを抱え、お互いに快適でなくなる

納期駆動型開発の環境では、開発チームの全員が能力を拡張して、ゲームの中で少しでも前に出ようともがき、自分の専門知識外の領域にまで手を広げがちになる。それがあだとなり、開発の遅れにつながることがよくある。

【対策】
開発チームが上記のような状態に陥ったとき、本当に成すべきことは、チームメイトが互いの技術を理解することである。そのための手法として「ペアプログラミング」は有効な一手だ。とりわけ、この手法におけるシャドーイングやランチタイムの勉強会などは、互いの技術を学び、高め合い、理解し合ううえで非常に効率的で有効な方法と言える。

兆候7: 通常の慣行がなおざりにされる

納期駆動型の開発により、納期を守ることだけが開発チームの目標になると、確立されたチーム内の儀式やコラボレーションの慣行のすべてがなおざりにされるようになる。例えば、

「スプリントの振り返り?必要なし!」、「チームランチ?重要ではないので中止!」、「ビルドの修正?いまは忙しいので、後回し!」という具合だ。

こうした状況は、先の「兆候6」で触れたチームメンバー各人の動き(=自分の能力を無理やり拡張しようとする動き)によって、さらに深刻化する。自分の能力を拡張しようと専門外の領域に手を出し、もがいているチームメンバーにとって、チームの儀式・慣行に従っている余裕はないからである。

【対策】
納期に追われている際に、チーム内の儀式や慣行をなおざりにするのは逆効果しかもたらさない。時間に追われているときこそ、基本を忠実に守り、チーム内の儀式・慣行を遂行するようにすることが大切だ。これにより、チームの動きはかえって機敏になり、決められた期間内で、より多くの成果が出せるようになる。もちろん、どういった儀式・慣行を遂行するのがベストかはチームによって異なる。私が属するチームでは、振り返りとスタンドアップミーティングを重要視し、それをスキップするようなことは絶対にしない。

兆候8: メンバーと交流し、絆(きずな)を築いている暇はないとの意見がチーム内で大勢を占めるようになる

プロジェクトの遂行のために新たに組織した開発チームでは、メンバー同士が互いのことをよく知らないことが多い。こうしたチームが納期に追われると、お互いのことを理解し、共感することがないまま作業が進められ、メンバー各人は時間との戦いに没頭するようになる。そして、物事がうまくいかないときには、他のメンバーを責めがちになる。

【対策】
メンバー同士が見知った関係ではない場合は特に、納期に対する作業の進捗がどうあれ、メンバー同士の交流の場を短時間でもいいので設けて、その場を相互理解のために最大限に活用することが大切である。プロジェクトが終了するまで交流を先延ばしにすることは、長いテーブルの端から端へとコーヒーカップが移動し、落下して割れるのを何もせずにただ眺め、割れたカップの後始末をするのと同じような行為だと考えるべきである。

兆候9: 新入社員も学習ではなく成果を出すことに必死になっている

会社に新たに加わった社員は、過去のキャリアがどうあろうと、最初の数週間は学びに集中し、会社の中で自分が何をすべきかの方向感をつかむ期間でなければならない。言い換えれば、入社後いきなり納期のプレッシャーを受けながら、仕事をこなす必要はないというわけだ。そして、新入社員との対話は、各人の生産性を高めるうえで必要な情報とリソースを提供することにフォーカスを絞ったものである必要がある。

【対策】
新入社員のために90日間の計画をしっかりと策定する。この計画には、新入社員による仕事の立ち上げをガイドするだけではなく、実際の生産につながる作業も含ませる。例えば、バックログの中からバグ修正の作業を選択させて、一週間をかけてその実務に当たらせ、結果に対するフィードバックとレビューを、本人とともに時間をかけて行うといったかたちである。

兆候10: マネージャーによる1on1ミーティングがプロジェクトと納期の話に終始するようになる

マネージャーとチームメンバーとの1on1(1対1)ミーティングは、メンバーの成長やキャリアアップ、人生の目標や夢について語り合う場でなければならない。それが、現在進行中の作業についての報告や確認の場に変質してしまうと、メンバーとマネージャーの軌道が捻(ね)じ曲げられるうえに、メンバーは日々のストレスを発散する場を一つ失い、士気を下げる。結果として、プロジェクトが進むペースがスローダウンすることになる。

また、1on1ミーティングが、スプリントの計画策定や振り返り、毎日のスタンドアップミーティングに似てくるということは、かなり大きな問題がメンバーの手元にあることを意味している。そうした問題は、1on1ミーティングとはまた別のところで解決すべきものと言える。

【対策】
1on1ミーティングは、マネージャーとチームメンバーとの相互理解と共感の創出に多くの時間を費やしたほうがよい。例えば、仕事以外で何が起きているかについて(共有が可能な範囲で)話し合うのは、互いの理解を深めるうえで有効である。

また、マネージャーは、メンバーが自分の仕事や人生で成功するために何が必要かを尋ね、それを手にするためにどうすべきかをアドバイスしたり、ともに考えたりすることも大切である。こうしたコミュニケーションは、メンバーのストレスを発散させ、心を落ち着かせる効果があり、それが結果的に、メンバー各人の生産性向上にもつながっていく。

問題解決のより高次なアイデア

以上、開発チームにおける納期駆動の兆候と、それをとらえた際の対策について紹介した。いずれにせよ、私たち開発チームが答えを出さなければならないのは、スピードと本来重要視すべきことのどちらを優先させるかである。常にスピードを優先させる場合、本当に重要なことをに対処する余裕はなくなる。顧客は、機能もバグフィックスも求めており、競合他社も市場シェアを奪うべく、製品の機能強化や新製品のリリースを行ってくる。こうした中で、より良いバランスを達成するためアイデアは大きく2つある。

一つは、小さいリリースを頻繁に行うことだ。アトラシアンは基本的にこの手法を採用しており、製品チームは、スコープが比較的狭いソフトウェアのリリースを短サイクルで行っている。また、2週間で提供できるソフトウェアの開発期間を2カ月間として見積もることもある。こうすることで、顧客からの信頼を裏切らずに済むようになり、2カ月間を要するとしていたソフトウェアを1カ月程度でリリースするだけで顧客に勢いを感じさせることもできる。そして、より多くの情報に基づいたエンジニアリングの決定が可能になり、間違ったものを作り上げてしまうリスクを減らすことができる。

もう一つの方法として、リリースする機能と日付に余裕を持たせた外部メッセージングを行うのも有効である。これは、リリースの明確な日程を約束するのではなく、時期を案内しておき、継続的に公開情報を更新していくというアプローチである。これによって、リリースの予定が少し変わるたびにPR・マーケティングのスケジュールを変更し、勢いをそいでしまうこともなくなる。

開発プロジェクトの計画、見積もり、およびマネジメントをどう適正化するかは、ソフトウェアエンジニアリングの業界が60年以上の長きにわたって取り組みながら、抜本的な解決に至らなかった難題であり、そう簡単に最適解が見つけられるようなテーマではない。

ただしそれでも、改善の試みを継続していくことは大切である。そして、納期についてプロジェクトリーダーにすべての責任を背負わせるのではなく、プロジェクトにかかわる全員が課題を共有し、解決に当たることが重要となる。