この記事はTECH PLAY女子部のアドベントカレンダー2017/12/4のエントリーです。
2016年6月に『最新のテクノロジーを使って、新しい音楽の体験を生み出し、「音楽を演奏する人」「音楽を聴く人」にとって、より幸せな世界をつくる』というミッションを胸に会社を2人で起業しました。
今は、弦楽器の練習をBowingVisionを自社開発していて、世にリリースするべく開発に励んでいます。
さて、弊社は2人しかいないのに、並行にいくつかプロジェクトが走り、すごい量のタスクを抱えてしまう時があります。
今、どっちが何をやっていて、どれが優先順位なんだっけ?そういうことに悩まされないために試行錯誤して編み出した、弊社で実践しているgitLabとtoggleを使ったタスク管理と情報共有についてお話したいと思います。
gitLabとtoggleを選んだ理由
無料で使えることが最大の理由で、かつgitLabはタスクの管理に優れていると思います。
gitLabは無料でプライベートリポジトリを無制限に作ることができます。gitHubと大差なさそうだし、月額利用料もチリツモなので、ソースコード管理とタスク管理はgitLabにしました。
gitLabは遅いとか不安定とも言われていますが、確かに少し遅いですが、実用上問題になるほどではありませんでした。(データベース吹っ飛ばしの時はびっくりしましたけどね。まぁ、復旧しましたし。)
toggleは、一つのissueをこなすのにどれだけの時間がかかるか、というところを可視化したかったので、導入しました。
全体のフロー
やっていることはシンプルです。プロジェクト毎にリポジトリを作成
- マイルストーンを週で作成
- タスクをissueに書き出す(基本ステータスはToDo)
- 月曜の朝に今週のタスクの確認と先週の積み残しとクローズを確認する
- 終わった週のマイルストーンをクローズ
シンプルですが、ちょっとずつ自分たちがわかるようなミニルールを少し加えています。
gitLabでのプロジェクトの管理方法
グループでリポジトリをまとめる
自社開発オンリーで邁進することができれば良いのですが、資金を稼ぎつつ、ある程度貯金ができたら、自社開発に集中をシフトする形をとっています。
世の中のスタートアップがXX億円調達!とかいうニュースは、火星あたりの話だと思っています・・・。
さておき、受託開発と自社開発の2つのプロジェクトが平行に走ります。
- 受託仕事
- 自社開発
この単位でリポジトリを分けたい!そんな時に便利なのが、gitLabのグループ機能です。
このグループ機能を使うと、リポジトリを階層ディレクトリのようにまとめることができます。
グループの下にそれぞれの案件毎のリポジトリを作成します。受託開発はここで、クライアントさん別のリポジトリができます。
グループ>リポジトリという階層になります。
※グループの下にさらにグループを作ることもできます
issueにつけるラベルを作成
gitLabはデフォルトで以下のラベルはすでに用意されています。
Doing/ToDo
ラベルは、リポジトリ単位、グループ単位、全体で作成することができます。
うちでは、全体通して同じルールでやりたいので、全体に適用するラベルを作成しました。
この曜日ラベルは、独自に付け加えたもので、後で利用します。
マイルストーンとissueの管理方法
マイルストーンの作成
弊社では、マイルストーンは週単位で作成します。
試行錯誤した結果、あまりに長いマイルストーンになると、遅れたものがわかりにくい、リカバリするタイミングが掴めないなどあったため、週単位でマイルストーンを管理するようにしています。
1年を今週は何週目でカウントします。日本ではあまりこのカウント方法は馴染みがないので、確認したい場合は、Googleカレンダーのxxx設定で表示して確認することができます。
issueの作成
issueの粒度は大きすぎず、小さすぎず。
自分がそのタスクを終わらせるためにどれだけ時間がかかったかを知りたい、その粒度で作成します。
タスクの中にいくつかタスクがある場合は、タスクリストで登録します。
最近は、Related issueで関連issueも簡単につなげられるので便利です。
カンバン表示
視覚的に便利ですよね、カンバン表示。
gitLabでは、これが標準でできます。Issue> Boardsを開きます。
issueの横断表示
issueは、リポジトリ単位だけでなく、グループ単位、会社単位で横断表示ができます。
プロジェクトを横断して自分がどれだけタスクを抱えて入るのか見ることができます。
今週するタスクを決める
月曜日に、全てのプロジェクトのissueをみて、今週の優先順位を決めます。
そして、今週の何曜日に何のタスクをするかざっくり決めます。
そこで登場するのが、曜日ラベル。
(曜日ラベルは、Todoとかと並んで作成しておきます。)
目安として、何曜日に何をするかを決めて、ラベリングします。
だいたい今週にやっておくissueを決めておくことで、急な対応や外出が入っても、ふとPCに戻った時に、何するかなーと余計な考える余白を作らずに、今週の優先issueに取り組めるようにしています。
曜日ラベリングしたものが曜日順に並ぶように簡単なChrome拡張機能を作りました(シャチョーが)
issueに取り組む時
さて、やるか!という時に必ず、toggleを回します。
toggleのChrome拡張機能を入れると、これが使えます。
toggleにもプロジェクトを登録できるので、これをgitLabのプロジェクトと同じにします。(後でプロジェクト毎のタイムを見るためです)
後からこのissueを終わらせるのに何時間かかったかをみたいのと、あとは座りすぎ防止と、SNSよそ見防止のためにやります。
toggleは60分単位でアラームがなるようにしていて、アラームがなると17分の休憩を取るようにしています。
2人で黙々と仕事しているので、急に話しかけられたり、打ち合わせに突然呼ばれたり、という横入りのタスクを入ることはほぼありません。そうないからこそ危険なのは、何時間も座りっぱなしの状態になり、集中力が切れる都度、SNSをみたり関係のないサイトを読んだりして、長時間座っているけど、集中力散漫になってしまうことです。
人間の集中できる時間は限られています。なので集中する時間を決めて、休憩時間には足踏みする、スクワットする、腹筋する、珈琲を飲むなどして、なるべく机から離れるようにしています。
issueのコメント欄
issueのコメント欄は、そのissueをやっている時に気づいた点を、とにかくメモしておきます。調べたことを箇条書き、参考リンクを貼っておくだけ、まずは自分があとで見返してわかるようにしておきます。
ドキュメント化した方がいいかなと後で感じた場合は、wikiかQiitaにまとめるようにします。
今週の進捗どうですか?
マイルストーンはプロジェクト毎でみていくことになりますが、バーンダウンチャートを表示してくれて、何のタスクが終わっていないかの確認ができます。
また日々のやったことのログは、toggleのダッシュボードでも確認することができます
やったことの振り返り
これができるのが、一番ですね。
Reportsでチーム毎or個人を選択し、今週、今月など任意に期間を設定して、各プロジェクト、各issueでどれだけ時間をかけたかを見ることができます。
振り返って見ると、あのissue、思っていたよりも割と簡単にできたなとか、時間がかかりすぎたissueがなぜそんなに時間をかけてしまったのかとか、振り返ることができます。
こうやって、何のタスクに自分がどれくらい時間がかかるかがわかると、次の仕事の見積もりが来た際にもだいたいブレずに見積もることができます。
弊社、新規技術開拓案件(できるのかそれ?・・・)みたいなのが多いのですが、それでもそういう仕事にどれだけ調査がかかるのかを数字で把握することができます。
やってみてよかった効果
集中力の維持ができる
toggleを回して、8クール目くらいになると、さすがに疲れて来ます。
1日に本当に集中できる体力って決まっていると実感し、途中で長い休憩を入れて、ウォーキングに出たりと積極的に体を動かすようにして、またパソコンに向かえるようにしています。
あと、toggle を回している時間は、SNSをみないをルールにしています。
可視化と自分の実力の把握ができる
これは、すでに書いたお話ですが、何をするのに、自分だとどれくらい時間がかかるのかということを数字で明確に把握できます。
短時間でできるのが全ていいとは思いませんが、無駄がないかどうかチェックできるようになります。
どんな時でもできると思える
たとえば、体調が悪く午前中は寝ていた日でも、午後から仕事をすれば生産性が0という日はほとんどないんだと気づくことができました。
「今日はたいしてできなかったな。。。」と落ち込む前にtoggleをみて見る。
そうすると、どんな日でも前に進んでいるんです。
明日はもっとできるかな、進められるかな、と自分自身を励ます材料にもなっています。
gitLabは無料でプロジェクト管理できる機能がたくさん揃っている上に無料で利用できるので、月額利用料が負担となる小さな会社で導入するのはオススメです!
来年もたくさん未知の分野の開発ができるといいな!