問題追跡システムに何を記録するか
問題追跡システム(Redmine)によるチケット駆動開発(もどき)を行っています.
機能追加やバグ修正を解決するためには,どのように問題を定義し,システムに記録すればよいのでしょうか.
また,モチベーションがあがるような記述内容はあるのでしょうか.
この問いに対して私は現在,問題をGTDのプロジェクトとして扱うことを試しています.
考え方
ストレスフリーの仕事術―仕事と人生をコントロールする52の法則 を参考に,問題に対して
- 目的
- 判断基準
- 成功条件(望ましい結果)
- 次の行動
を記録します.
問題(チケット)を2,3日で解決できる粒度で記述しています.
目的
なぜこれを解決しなければならないか
判断基準
この問題解決を行うにあたり,意思決定したり行動したりする際の判断基準
成功条件
成功したと言える状態の定義
成功した状態がイメージできる粒度で記述
次の行動
次の起こすアクション
終了条件が明確にイメージできるように記述
脳が冴える15の習慣 記憶・集中・思考力を高める (生活人新書) を参考に,この行動にかける時間を記録する.時間に制約をかけること(それを死守する姿勢)によって,重要な部分から手をつけるようになる.
決めた時間以上に時間がかかりそうな際は,次の行動を分割して次の行動を記述する.
明確にイメージできる終了条件と時間制約によって,モチベーションが高まる.
ソフトウェア開発を行っているので,この次の行動の粒度でSCM(subverison)にコミットを行っています.
成果物があればそれを記述したり,ファイルを添付したりします.
Redmineへの適用
上記の項目を,Redmineのチケット作成時,チケット更新時に自動的に挿入する(やっつけ)パッチです.
Redmine-0.7.3
app/views/issues/_form.rhtml
変更前
<%= f.text_area :description, :required => true, :cols => 60, :rows => (@issue.description.blank? ? 10 : [[10, @issue.description.length / 50].max, 100].min), :accesskey => accesskey(:edit), :class => 'wiki-edit' %></p>
変更後
<% if @issue.new_record? %> <%= f.text_area :description, :required => true, :cols => 60, :rows => (@issue.description.blank? ? 10 : [[10, @issue.description.length / 50].max, 100].min), :accesskey => accesskey(:edit), :value => "* 目的 * 判断基準 * 成功条件 ", :class => 'wiki-edit' %></p> <% else %> <%= f.text_area :description, :required => true, :cols => 60, :rows => (@issue.description.blank? ? 10 : [[10, @issue.description.length / 50].max, 100].min), :accesskey => accesskey(:edit), :class => 'wiki-edit' %></p> <% end %>
app/views/issues/_edit.rhtml
変更前
<fieldset><legend><%= l(:field_notes) %></legend> <%= text_area_tag 'notes', @notes, :cols => 60, :rows => 10, :class => 'wiki-edit' %> <%= wikitoolbar_for 'notes' %>
変更後
<fieldset><legend><%= l(:field_notes) %></legend> <% @notes="* 次の行動/制限時間\n" if @notes == nil || @notes == "" %> <%= text_area_tag 'notes', @notes, :cols => 60, :rows => 10, :class => 'wiki-edit' %> <%= wikitoolbar_for 'notes' %>