"ninlabs research" という名称で研究成果を公開している Chris Parnin氏が,EclipseとVisual Studioを使用している86人のプログラマから収集した,10,000件のプログラムセッション情報に関する調査結果を発表した。Programmer Interrupted と題したその論文には,気掛かりではあるが予想外のデータポイントがいくつか確認できる。
- プログラマが一旦作業を中断すると,再開後にコード編集を開始するまで10~15分を必要とする。
- メソッド編集中に作業を中断した場合,1分未満で作業を再開することのできたプログラマはわずか10%だった。
- プログラマが連続した作業時間を確保できるのは,2時間のセッションが1日に1回程度である。
さらに氏は,
今回の調査では,プログラマが作業の中断に対処する方法もいくつか確認できました。
- ほとんどセッションでは,編集作業を再開する前に,さまざまな部分でコンテキストの再構築を行っていました。
- "バリケード" リマインダとして,コンパイルエラーを意図的に書き込んでいるプログラマもいました。
- ソースのdiff取得が状態回復の最終手段となっているようです。ただし再開後の確認作業に手間取る可能性があります。
プログラマの "記憶負荷 (Memory Load)" を判定するために,氏は同僚の協力を得て 瞳孔測定 というテクニックを採用することにした。60年代の研究者たちによって,心理的に困難な問題に取り組んでいるときには瞳孔が拡張し,解決に達すると収縮することが発見されている。同じようなことが,単語のリストを暗記して復唱するような認知的タスクにおいても発生する。
記憶負荷を測定するために用いられたもうひとつのテクニックは,独り言(subvocal utterances)に関するものだ。関連する論文で,氏は次のように書いている。
独り言という行動が特定の行為に強く関連付けられていること,他の行為によって条件付けられていることが分かりました。独り言とコードの編集作業には強い相関関係が存在します。プログラムの検討作業中の独り言は限定的で,主として対象が重要なコード (テトリスのブロックを移動させるロジック,あるいはブロック動作が停止した場合のテスト) に差し掛かった場合において確認されています。プログラムのデバッグやテストを行うときにも,独り言が見られることが分かりました。これらの作業が問題の定式化や,解決策の評価に関連するものであるからだと思われます。
論文ではさらに,さまざまなタイプの記憶や,それらがプログラマのワークフローにどのような関連を持っているか,という点についても説明されている。例えば,
- 展望的記憶(Prospective Memory) – 会社帰りにミルクを買うというように,特定の状況において実行される将来的活動を覚え留めるもの。
- 適用型記憶(Attentive Memory) – 自由に適用可能な意識的記憶。
- 連想記憶(Associative Memory) – 共起的刺激の発現間に生じる,非意識的なリンクのセット。
- エピソード記憶 – 過去の出来事の回想。
Chris Parnin 氏は,ジョージア工科大学計算機学部(College of Computing) の博士課程学生で,ソフトウェア開発のHCI(Human-Computer Interfare)面,および神経科学的側面に関する実証的研究を行っている。今回の結果からは,ソフトウェア開発の実態がどのようなものか,そのプロセスにおいて特定のツールがいかに有益あるいは有害か,ということが確認される。