2013年11月24日日曜日

「Busy Developer’s Guide to Functional Languages」を見て

「Busy Developer’s Guide to Functional Languages - Ted Neward」(http://vimeo.com/13324951)を11/21,22の昼休みに聞いた。
50分強で若干長かったが、英語も聞き取りやすく内容も分かりやすかった。

関数型言語の紹介内容とはして普通で、文ではなくて式を書く、参照透過性や高階関数、部分適用を特徴として上げていた。

また、多くの関数型言語には強い静的型付けと型推論があるとも言っていて、やはりこれがミスのチェックに有用の様だ。

面白かったところとしてはexcelを関数型言語の例として挙げている所。
確かにexcelには変数と言う概念が無いので、関数型に近いのかもしれない。

F#の親がOcamlであるとか、haskellとerlangよりF#とscalaがより実践的である等の話もあった。

「かんばん!~もし女子高生がRedmineでスクラム開発をしたら」を読んで

@ITで認定スクラムマスター 岡本隆史さんのスクラムの記事を読んだ。
http://www.atmarkit.co.jp/fjava/index/index_scrum.html

[プロダクトバックログ]
開発に必要な全作業。
開発項目、非機能要件も含む。
要件はストーリーする。

[ポイント]
見積りにポイントと言う開発項目間の相対規模を使う。
これによって人月よりも実施する人への依存度を下げる。
ポイントは粒度はフィボナッチ数列を使う。
小さい物は細かい、大きい物は荒い見積もりになるため。
#PSPの様に対数スケールでも良いかも知れない。
ポイントは1~8に収まる位の相対粒度になっていると良い。8を超える様な分割する。
#人は10倍以内のものなら上手く見積もれる。(マイク・コーン)

[スプリント]
2週間~1ヶ月程度の間隔で動作するソフトウエアで繰り返し確認して行く。
優先順位が物から一部の機能をスプリントで開発。
動く物を作る事で、考慮漏れを減らせる。
各スプリントにそのスプリントのゴールを示す名前を付けた方が良い。
スプリント計画時には各タスクの担当者は決めないでおく。

[ベロシティ]
一回のスプリントで消化できるポイント。
生産性を安定させるために同じメンバでスプリントを繰り返す。
チームワーク、暗黙知も利用する。
1チーム3~9人。

[スプリントバッグログ]
プロダクトバックログからそのスプリントで実施する項目を決める。
それを詳細化する。見積りは作業時間(hour)。1タスク20時間以内。

[デイリースクラム]
毎朝短時間のスタンディングミーティングを行う。
前日の報告と今日予定と懸案事項の確認。
簡単に出来る見える化。
タスクの割り当ては朝会で行う。
タスクの終了へのステータス変更は朝会で行う。
みんなの前でステータスを終了することにより、チーム全体で達成感を共有できる。

[タスクボード]
スクラムはトヨタのかんばん方式の影響を受けている。
これも状況の見える化。各タスクのステータスを張り出す。
新規、進行中、終了の3状態で管理。難しくし過ぎない。

[スプリントレビュー]
直近出てきた問題点や改善点に注意が集中してしまうので、
既存の課題と合せて適切に優先度付けする必要がある。
作業時間の予実報告もここで行う。作業時間は記録すべき(PSP的)。

[ALMinium]
Redmineやバージョン管理システム等の開発管理ツールのパッケージ。
スクラム開発管理に必要なツールが一通り入っている。

[継続的インテグレーション]
jenkinsでコーディング規約違反数やカバレッジなどのメトリクスを管理できる。


[その他]
「ドラッカーこと@ryuzeeさん」と言う人が居るらしい。
アジャイル推進派の人の中には、「紙を使ってかんばん(タスクボード)を運用すべき」っていう人もたくさんいる。
1つのタスクが完了したら、拍手などして盛り上げる。
「Associate Persona」遊び心。
「ブラックジャックによろしく」佐藤秀峰(漫画 on web http://mangaonweb.com/)

2013年11月6日水曜日

自己決定理論について

「自己決定理論」とは、乱暴に言うと「自分でやりたいと思っている事をやっている時に一番能力が発揮できる」と言う事。

内発的動機に基づく自律的な行動だと高いモチベーションを保てる。

逆に内発的動機が高い場合に報酬などを与えてしまうと、外発的動機は高まるが内発的動機が低くなって、全体としてはモチベーションが下がってしまう事がある。
#アンダーマイニング現象

子供に勉強しなさいと言うと「今勉強しようと思ったのに!」と言って反抗するのは、外発的動機によって内発的動機が低くなってしまったとも言える。

長期的な目的には内発的な動機は重要かつ不可欠だが、それを実現するための短期的な動機づけとして外発的な動機づけを予め設計しておくと言うのは良い手であると思える。

例えば、自分に対してテストで90点以上取ったらケーキを食べても良い事にする等の報酬を設定して当面はそれを目的に勉強したり、テストが終わるまでは毎日勉強したかを誰かにチェックしてもらう等してそのフォローに対応するために勉強したりなど。
#commitemt deviceとも言えるかも。

gamification等で短期的な目標の報酬(バッジ等)が長期的な目的と直接関係が無いと、「なんか騙されてやらせれている気がする」と感じる人もいるかもしれない。
ただ、逆に「長期的な目的に逆らって短期的な欲求に影響されてしまう自分」に逆らわずに上手く騙して長期的な目的に一歩ずつ近づけるかがポイントと考えている。

gamification.jpを読んで

今日はまとまった時間が取れたのでhttp://gamification.jpの記事をたくさん読めた。

考え方や事例などが豊富に載っている非常に良いサイト。
7/30以降更新が止まっているのでちょっと心配だが、今後もどんどん情報発信して頂ける事とを期待。

gamificationの重要なポイントとして「長期的なで曖昧な目的の達成のために短期的で具体的な目標を用意する」と言う事が述べられており、ここは大いに同意出来る。

また、「おもてなし」の概念との共通性も上げられていて、これが今後のgamificationの成否のポイントになって来る可能性があるとの事。そうなれば「おもてなし文化」が根付いている日本が今後gamificationの分野で優位性を発揮できる可能性も期待できると感じた。

更に、日本の様な成熟社会のモチベーション(生産性)の向上にもgamificationは有効化もしれないと思った。

テレビなど新興国の話を聞くと若い人を中心にハングリー精神があり活気に溢れている。
一方日本ではあるレベルの生活が手に入る事が当たり前と認識されてしまって来ているせいか、他人との競争に勝って成功すると言う事に対する執着が薄れていると感じている。
#そう言う自分自身もその一人かもしれないが。。。

こう言う状況化だと、実生活の向上を目標にするよりも実生活と離れてた仮想的な世界での向上を目標にした方が、モチベーション維持、向上に役立つような気がする。

長期的であいまいな「目的」(例えば「幸せになる」とかは何時でも変わらないと思うが、成熟社会でそれをドライブするためにgamificationが使えないかは今後も考えて行きたい。