タスクは複数積んでおく
前提として、ある人に相談しないとその先の作業ができない。というのは完全に避けることは難しいと思います。そして、リアルタイムに連絡が取れるのであっても、対応のため連絡した先の人の作業を止めてしまいますし、対応するための時間も必要になりますので、結局のところ自分の作業は止まってしまいます。
つまり、リアルタイムに連絡が取れるかどうかは全く重要ではありません。
こういった、待ちを防ぐためには”タスクを複数積んでおく”と良いと思います。
つまり、質問している間に他のタスクの作業をすればよいのです。質問先の人にとっても、すぐに対応する必要はなく、今やっている作業がひと段落してから対応すればよいので、非常に効率が上がります。
また、やっている作業を途中で中断されるというのは、ミスやバグを産む土壌になります。特にコーディング作業の最中の中断は厄介ですね。
そして、どのぐらいの作業をいつまでに終わらせればいいのか、ゴールが見えている状態にすることは非常に重要です。
以前、タスクをひとつづつしか割り振ってくれない顧客がいたのですが、非常にやりにくかった経験があります。これやって、つぎこれ、つぎこれ・・・という形で依頼が来たのですが、ゴールが見えないのでストレスがたまりますし、関連した内容であれば一気にやったほうが効率が良く、わかっていればコードも共通化、効率化で来たのにということも発生します。また、先に説明したように質問のたびに作業が止まってしまい時間も余計にかかってしまいました。
また、進捗管理をプロジェクトマネージャが行っていて、複数人の作業者に対して、作業が終わったら次のタスクを割り振る、というスタイルで管理している場合もあるかと思いますが、これも同様に良くないやり方です。作業者のスキルレベルやスピード感がわからない場合にこういうやり方をする場合があるかと思いますが、初めに作業を割り当てておく方式でも、進捗が遅れ気味であればほかの人にタスクを割り当てなおせばいいだけの話なので、この方法をとる意味はありません。
対して、タスクを積んでおいてもらえれば、あらかじめ質問しておくことができるので、進行もスムーズでバグやトラブルが非常に少なくなりました。
一つ一つ確認しながら進めるというのもわからなくはないのですが、今はGitやサブバージョンなどでソースコードの切り替えが簡単にできますので、別の作業に移るのことは非常に簡単です。
というより、gitflowなどの開発スタイルだと、タスクごとにブランチを切って作業するというのが主流の手法ですので、全く問題はないかと思います。
本ブログでは、こういった五月雨式にタスクを割り当てする方法を、今回はシングルタスク方式、複数のタスクを並行して行う方式を、パラレルタスク方式、と呼ぶことにします。そういう用語があるわけではなく、私が勝手に名付けただけなので、その点はあしからず。
無意味に急がせるのはご法度
プロジェクト自体は、余裕を持ったスケジュールにすることが大切ですが、タスクも無意味に急がせることは絶対にやめましょう。よくあるのが、就業間際に大量の仕事を持ってきて、特に急いでいないのに明日までにやっといて見たいな感じで依頼するパターンですね。
そもそも、急いでやるというのはミスや失敗の素ですし、本当に優先すべきタスクが分からなくなり、結果的にスケジュールの遅れが発生しますし、モチベーションも大幅に下がります。
他のパターンとして、作業中に発生した問題をプロジェクトマネージャに質問する場合。シングルタスク方式では、作業者の作業が止まってしまうため、できるだけ早く返答をしなくてはいけません。となると、同様に考慮不足や伝え忘れ、ミスが発生する可能性が高まります。一方、パラレルタスク方式であればプロジェクトマネージャは急いで返答する必要はなく、ゆっくり考えて返答することができますので、質が高い返答をすることができます。
属人的な体制を排除する
タスクを複数積んでおくことで、リアルタイムに連絡が取れなくても業務を遂行できることは説明しましたが、緊急的な事態が発生してしまうというのはやむを得ないです。しかしながら、属人的なシステム・体制はダメです。単に連絡がつかないでかであれば、時間が解決しますが、事故や病気で急な退職などで対応できなくなるということも考慮すべきです。
当然、作った本人が一番詳しいのは仕方がないですが、多少効率が下がっても、メンバーのだれもでもが対応できる体制を整えるべきです。
こういった体制を整えるには
- だれがどんな作業をしているか全員が把握できる
- 簡易的でもよいのでドキュメントを残す
といったことが大切ですが、こちらも、あとで紹介するコミュニケーションツールやプロジェクト管理ツールを使うと簡単に情報を共有することが可能です。