かんばん系タスク管理ツール作ります vol.3

はじめに

前回のVol2でざっくりとした機能の要件をまとめました。今回は

「タスク管理」の管理をマネージャの仕事にしない仕組み

をブレイクダウンして詳細に落とし込んでみます。

「タスク管理」の管理をマネージャの仕事にしない仕組みの詳細を作る

前回決めたこと

「その日動いた」タスクだけを表示する機能
「動いた」の定義を
 ・TODO→DOINGにしたなどステータスの変更
 ・タスクが作成された
 ・タスクに誰かがアサインされた
 ・タスクの進捗があった
の4つにします。

ここから機能をブレイクダウンしていきます。

「その日動いた」タスクだけを表示する機能
から

・「動いた」日付記録する
・「動いた」日付で検索する

の2つに分けることができます。1つ1つここから詳細を詰めていきます。

 

動いた日付を記録する

前回設定したタスクに動きがあった時の定義の沿って動いた日付を更新する仕様つければ良さそうです。それだけだと、何で動いたかわからないので、動いた内容をログとして残す事も仕様として、追加します。

・タスクが「動いた」場合ログを保存する
・最新の「動いた」日付を保存する

動いた日付で検索するこれは色々な方法がありますが、カンバン表示のまま、その日動いたタスクのみを表示する機能で良さそうです。昨日動いたタスクを見たいという場合もありそうなので日付を設定出来る便利そうです。

まとめると2つの要件
・ボタン1つで当日動いたタスクだけを表示できる
・日付は変更して前日なども見ることが出来る
この2点を実現する方法を考えます。ここはアイデア勝負になりそうですが、フリーワード検索の機能を作り、#action20190807とかいれると8月7日に動いたタスクのみを表示する検索機能を作ることで2つの要件を満たす機能を作ることができそうです。画像1・タスクをフリーワードで検索できる
・フリーワードに#action20190807の様にコマンドを入れると該当日の動いたタスクを検索できる
・フリーワード検索にボタン1つで#action日付をいれることができる

 

まとめ

・タスクの変更はログとして残す
・最新のタスクが「動いた」時間が保存される
・タスクのフリーワード検索が出来る
・フリーワード検索にはコマンドで指定日に動いたタスクを検索できる(コマンド検索)
・コマンド検索のショートカットボタンがある
これで5つの仕様が出来ました。今回1つ目の課題解決のための機能の詳細を考えました。また、ここで出たフリーワード検索とコマンド検索はその他にも色々と使えそうなのでわくわくします。(自分がアサインされてるタスク検索とか、自分が作成したタスク検索などなど。色々と便利に出来そうです。)

かんばん系タスク管理ツール作ります vol.2

腕まくりをする人のイラスト(男性会社員)

 

gac777.hatenadiary.org

はじめに

タスク管理の失敗から以下の3つを満足するタスク管理ツールを作る事になりました。今回はこれをブレイクダウンして機能に落とし込んでいきます。

 

1. 「タスク管理」の管理をマネージャの仕事にしない仕組み

2. 目標を常に意識する状態でタスクを作る・依頼される状態にする

3. タスクの議論はタスク単位でログを残せる状態。

 

サービスを作る場合

抽象度大→抽象度中→抽象度小→抽象度0(仕様)

の順に仕様に落としていきます。

抽象度についてもう少し詳しく書くと↓のような感じです。

 

抽象度大:「課題からみた解決するための方向性の設定です」←前回

抽象度中:「課題を解決するための方向性から要件を定義」←今回

抽象度小:「要件から更にブレイクダウンしてざっくりとしたイメージを作る」

抽象度0:「詳細仕様の作成」

では要件へ落とし込みをしていきます

 

要件への落とし込み

1. 「タスク管理」の管理をマネージャの仕事にしない仕組み

前回、管理ツールだけど1点だけ使用する上での組織運営ルールを設定する事にしました。そこでこの機能はその組織運営ルールを円滑にすすめる事が目的の機能になります。

組織運営のルール

毎日その日にやったことを共有する夕会の実施。但し、個々のやったことを順番に共有するのではなく、「その日に動いた」タスク単位で発表する

 

メンバーがタスクを動かす

  ↓

「その日動いた」タスクだけを表示する

という機能を作ります。

「動いた」の定義は

・TODO→DOINGにしたなどステータスの変更

・タスクが作成された

・タスクに誰かがアサインされた

・タスクの進捗(タスクごとにチェックリストつける?)があった

の4つにします。

2. 目標を常に意識する状態でタスクを作る・依頼される状態にする

目標ごとにかんばんを作成する事が出来、かんばん間の表示切り替えはスムーズに出来る機能

これはイメージとして普段使っているslackがチャンネルごとにそのチャンネル名に一致した内容を会話するイメージに近いです。(チャンネルごとにかんばんがあるイメージ)

3. タスクの議論はタスク単位でログを残せる状態。

ここはそこまで考えずに

「タスクごとにコメントのやりとりが出来る機能」

でいきます。

基本機能について

基本機能は「かんばん系タスク管理ツール」なので、

・TODO→DOINGなどがドラッグ&ドロップで移動出来る

・タスクを作成・編集・削除出来る・タスクは名前と詳細を書くことが出来る

などでしょうか。基本的なサービス作りの場合、まずは重要に解決したい課題から機能を落とし込んでいくため、基本機能はざっくりでいつもまとめ、作りながら必要である基本機能を作り込んでいきます。

まとめ

今回は課題解決の方向性から、要件をしぼっていきました。

実はすでにこのタスク管理ツールは開発し、勤め先で使用しています。(このブログはその開発ログとして残すために時間を遡って書いています。)

現在、まず社内で使うと考えた場合、いわゆるクローズα版ですが、課題とその解決方法が本当に受け入れられるか?という視点でα版をリリースし社内利用しています。

α版なので課題を解決出来ている部分を体感してもらうことが最優先のため、基本的な物が抜けていたりします。

そのため、「コメントが編集出来ない・・」「UIがもっときれいにならない?」といった声ももらいます。

一方で、課題解決のための各メンバーがタスクを自分たちで更新する部分などはうまく周る事が確認でき、この課題解決の仮設は正しいという事も実感できたりしています。

このあたりのα版の話も今後書いていこうと思います。

WEBエンジニアのマインドについて

はじめに

最近はテックキャンプなどでエンジニアになる方も増え、物作り人材が増えることはとてもうれしく思います。私が努めている会社でも未経験からエンジニアになりで活躍しているメンバーもいて頼もしいなと日々感じています。

そんな中で「えっなんでそれしてないの??」って感じる事がよくあるのですが、そりゃ当たり前なんですよね。

自分の常識は他人の常識と異なるし、エンジニアとしてずっと経験したからこそ今常識になっているものもあるので。

(例えば、自分のPCでテスト・ステージングでも同じテスト。OKならリリース。リリースしたら本番でも確認とかもきちんと理由含めて伝えないと常識として身につかなかったり。)

そこで、今まで自分が経験から得た常識などをちょいちょい共有していければと思います。

今回はエンジニアマインドについて書こうと思います。

(このマインドついてればスキル以外の部分で面接落ちることないのでは・・・)

7つのマインド習慣について

1.わからないをそのままにしない

「なぜ?」「どうして?」を常に意識し、わからないままにせずに探求するマインドです。

なぜ障害が起きてしまったのか?

どうしてその設定をしないといけないのか?

このわからないをそのままにしない事を習慣付けることで自身の知識量も増え、その知識から発展した事象を理解できるようになっていきます。

 2.自分の決断に対してなぜ?を答えられる

エンジニアは必ず技術的な選定をする場面に出会います。

理由がないなら他のチームメンバーから、それならこっちにしようといった議論にもなってしまいます。

エンジニアの仕事は選択の連続です。設計も実装も様々な方法がある中で選択し実行していきます。その選択に対して常になぜそれを選択したか?を答えられるようにしましょう。

面接で「なぜその技術を選んだのですか?」はよく聞かれる質問でもあります。

 3.目的を常に意識する

今行っている自分の仕事は何のためなのか?何の課題を解決するものなのかを意識します。そうする事で自分自身のアウトプットの質を上げることもできます。企画と開発が別れている場合、企画は動かないものから動くものを想像しますが、開発は動くものを作り、動くものでテストをするため、企画時では想定していなかった事やよりよい案が浮かぶこともあります。

4.当事者意識

前述の目的意識につよいですが、当事者意識も重要です。企画から言われたものを作るのではなく、目的意識からより良い案を浮かべたら、この企画を成功するために

「○○の課題を解決するなら、こういう文言の方がいいのでは?」

「○○の課題を解決するなら、こういう動きの方がいいのでは?」

 など、開発中に気がついたことを提案し、より成功に導きましょう

また、リリース後も目標通りになっているのかを注視することも重要です。

○○の機能リリースして効果どうでした?には常に答えられるようにしましょう。 

5.周りのメンバーの仕事も意識する

エンジニアは1人の仕事が多いので、周りのメンバーの動きを意識しようと思わないとなかなか気がつけない事が多いですが、周りが今何の仕事をしているのかを常に意識して、その開発するならこっちも同じことしてるから一緒に設計したり、他者の書いたコードで障害が発生した時に対応出来るように、コードレビュー頼まれてなくても、リリース前のコードをチェックするなど。

特にリリース前のコードを見ることはリリース直後に発生する障害対応も迅速に行える場合もあるのでおすすめです。

6.作ったサービス対して感度高く反応する

実際に自分で触ってみるのもそうですが、ものつくりのゴールはその「もの」があることで人を便利に豊かにする事です。作るがゴールではなく使われ、価値を感じられて初めてものつくりの意味が出ます。

そのため、常に自身が関わるサービスを触り、改善案を出したり、ユーザからの問い合わせが来る前に気がつくようにしましょう。

 7.楽しく働く

楽しく働くことを私はいつも心がけてます。40歳になってもエンジニアメンバーに会うのが楽しくて会社に行ってます。(若い頃は40になったら楽しいとかいう感情あまり出ないと思っていました。)

楽しく働くことのメリットはすごくあります。例えば、サービスを触っていてくだらないかも?と思うアイデアが思いついた時に楽しい雰囲気のチームであれば、そのアイデアを共有する事が容易になります。しかし、普段あまりしゃべらないチームではくだらないと思うアイデアはなかなか声に出せません。くだらないと思ったアイデアでも実際にリリースしてみると思わぬ反響があったりもします。

(私は楽しく働けるチームのために一番おバカな事したり、くだらないアイデアを率先して話したりします。よく却下されてますが・・・)

 

まとめ

エンジニアのマインドを7つにまとめてみました。 このマインドを習慣付けるようにしていく事でWEBサービス開発への行動が代わり、信頼され、スキルを付けていくことでよりよいエンジニアライフになると思います(多分)。

 

 

 

かんばん系タスク管理ツール作ります

f:id:gac777:20190924220502p:plain

はじめに

はじめまして、IT系ベンチャーでCTOしてる水上です。私は、ゲーム・EC・人材とWEBサービスを作ってきました。その中でも必ず必要なタスク管理がありますが、常に満足出来る状態にはなりませんでした。そこで今までの経験を活かし、PDCAを高速に回すWEBサービスに最適な管理ツールを作ろうと思います。 

タスク管理は必要?

そもそもなんでタスク管理しないとけないのか?を整理すると・今何してるか?・何をすべき?(優先度・やるべきTODO)
・なぜそれをしてるか?
・作業状態はどうか?(遅延?課題はあるのか?)
・いつまでに?
・優先度は?
・なぜ今それしてるの?(期初の方針的にそうなってるよねなど)
・やるべき事の漏れの防止などなどがあります。思いつくままにサービス開発してたら何が出来上がるかわからないので、最低でもスプレッドシートで運用など何かしらWEBサービスを作る際にはタスク管理がされていると思います。

タスク管理、そして失敗の連続

WEBサービスを運営するうえで、企画や開発のタスク管理は必須になるため、タスク管理を行っていましたが、なかなか「これだ!」といった物が出来ませんでした。
 
タスク管理ツールの状態と実際のチームの動きが同期が取れていない(実際は作業しているのにTODOのままになっていたり)
 
そのためにマネージャのお仕事がタスク管理ではなく、タスク管理を管理する事になる。
 
期初に決めた開発目標(OKRなど)とまったく違うことをいつのまにかしている 
 
仕様変更により当初作成したタスクの目的とは、異なる目的になっていた。 
 
ビジネスサイドからの開発依頼が現在の開発目標と関係ないものが多々来て優先度の説明のMTGが開かれる。
 
 最近はslack文化が広まり、仕様変更がslack内で完結し、なんでこの仕様になってたけ、、、こないだやりとりして決めたましたよ、slackにログありますよ!って会話になりslackログ膨大過ぎて見つからない・・ 
 
もうタスク管理楽しくない、やりたくない、面倒くさい、勝手に動いてください!みたいな気持ちになりますが、大人として失格なので、まるっと自分の不満を解消するタスク管理ルールとツールを作ってしまおう事にしました。

失敗からのタスク管理(ツール)の課題まとめ

・実態とタスク管理ツールの状態に差分が生じやすい
 
・タスクの先にある目的を意識出来ない
 
・コミュニケーションがタスク管理ごとに出来ない
 
・期初に想定した目的にないものが増えてる事に気がつかない

失敗から考えたWEBサービス運営のタスク管理ツール

以下の3つの要件を管理ルールと管理ツールに落とし込む事にしました。
 
1. 「タスク管理」の管理をマネージャの仕事にしない仕組み
 
2. 目標を常に意識する状態でタスクを作る・依頼される状態にする
 
3. タスクの議論はタスク単位でログを残せる状態。それではこの3つについて詳細を説明します。
 

 1.「タスク管理」の管理をマネージャの仕事にしない

理想はマネージャがメンバーの現状のタスク状態とタスク管理ツールの状態を常にシンクする事です。しかし人はなかなかそれが出来ない。なのでマネージャが状況を聞きながらタスク管理ツールを管理するという悲しい状態になります。目指すべき状態は「メンバーがタスクを常に更新する状況を作る」事です。そのためにはメンバーにとって自分からタスクを更新する力学が必要になってきます。そこで作る管理ツールは管理ツールだけど、1点だけ組織運営のルールを設定します。
組織運営のルール
毎日その日にやったことを共有する夕会の実施。但し、個々のやったことを順番に共有するのではなく、「その日に動いた」タスク単位で発表する
例えば、管理ツール側にメンバーがその日動いたタスクのログを残す事(チェックリストにチェックを入れるなど)で、「その日に動いたタスク一覧」を出して、動いたタスク一覧の順番に発表していくことにすれば、その日動いたタスク一覧に自分のタスクが表示されなければ発表出来ない=「今日何もしていません」という状態になるため、「その日動いたタスクを記載する」というルールを自然にチームに根付かせる事が出来ます。
 

 2.目標を常に意識する状態でタスクを作る・依頼される状態にする

これはタスクを作るときに「必ず期初に設定した目標を選択する」という入力方法を作ることで、このタスクが期初設定された目標のどれにあたるのか?を自然に意識して作成出来ます。例えば、期初の目標が以下の3つであった場合
・「購入のCVRを10%にする」
・「1人当たりの商品閲覧件数を10件にする」
・「購入時のおすすめ商品の購入を前Qの1.3倍にする」
この3つのいずれかを選択しないとタスクが作成出来ない状態にします。(実際は「その他」という選択肢をつけますが、「その他」は優先度は低くなります) 
 

3.タスクの議論はタスク単位でログを残す

slackなどのコミュニケーションツールは劇的にチームの活性化を高めてくれたのですが、この仕様はどういう経緯で決まったのか?といった時にslackログを探してもなかなか該当の箇所が見つからないなどがあります。そこでタスク管理ツールではタスク単位でコミュニケーションを取れる状態を作り、そこで議論を行ってもらう事にします。
(これはtrelloでもありましたが、なぜか使っていなかった。)

開発するタスク管理ツールについて

このタスク管理ツールを作る時に、エンジニアだけではなくビジネスサイドの人もチームの状況や今やってる事が分かる状態にしたいという思いがあり、シンプルに表示できる「かんばん」をメインに作ることにしました。

まとめ

実はタスク管理ツールを作るのは2回目です。5年前にも使いやすいタスク管理ツールを作っていたつもりでしたが、タスク管理ツールを管理しないといけないという状況を脱する事が出来なかったため、やめてしまいました。あれから5年経ち、経験からもいけそうなアイデアも生まれ今回は、いいプロダクトが出来そうです。
 
良いものができたら公開して他の人にも使ってほしいという夢を見ながら作るのですが、実際使う場面がチームでの利用を想定しているため、個人でリリースしたものが企業で使ってもらえるのか、企業向けの場合はインフラ周りなどもきちんと作らないといけないのでくそうなるとインフラ代の月数万いきそうなところをどうするか、など色々な問題点はありそうですが、世の中に良いものを提供したいというエンジニアの本質のマインドで頑張っていこうと思います。