テンションが高い状態で集中しプログラミングをしているときの開発生産性は驚くべきものがある。
しかし、好きな技術、ジャンルの仕事をしていたとしても、どうもテンションがあがらない、モチベ−ションがあがってこないというという状況になってしまうこともあるだろう。
このエントリーでは、私があるperlのシステム開発プロジェクトに参画した際に、自分のプログラミング・テンションを高めるために試みた1つの方法を紹介する。
今回の方法は、心理学で言う「お預け理論」をベースとして考案された方法である。
私が参画したプロジェクトはスケジュール的余裕もなく、夜遅くまで精一杯やって終わるかどうかという開発量であった。このような状況では、少しでも早く手を動かし、プログラミングを始めたくなるのが人間心理ではないだろうか。
しかし私は、朝に席に着き、マシンを立ち上げ、メールをチェックしたあと、すぐにプログラミングを始めずに「perlベストプラクティス(オライリー出版)」を30分かけて読むという作戦をとった。(perlベストプラクティスの表紙もお預けを食らったかのような犬のイラストである)
「perlベストプラクティス」は、perlプログラムの堅牢性、効率性、保守性をアップすることを目標としてコーディング理論、ノウハウがまとめれた名著である。これを読むことで、perlに限らず他の言語でも適用できる優れたプログラミング理論、お作法を学ぶことができる。
内容は、コードのレイアウト、命名規則、値と式、変数、制御構造、ドキュメント、組み込み関数、サブルーチン、I/O、参照、正規表現、エラー処理、コマンドライン処理、オブジェクト、クラス階層、モジュール、テストとデバッグなど18章に渡り、かなり重厚である。
(余談だが、perlベストプラクティスで貫かれているポリシーとしては『perlはいろいろな書き方、文法が用意されていて便利な言語だけど、それを各個人が、自由気ままに使うと、プログラムが読みづらくなって、保守性が下がったりバグを見つけにくくなるから、使う機能、文法を限定して、誰にも読めるようにしようね』と言うことであるように感じた。ちなみにpythonは、ひとつのことをやるのにひとつしか書き方がないという言語設計なのでそのような本末転倒っぽいことはなく、普通に書けば読みやすいコードとなる。ビープラウドがLL(Light Weight Language)の開発言語としてpythonを推す理由の1つもそこにある)
1日1章を読むことに目標していたので、かなり集中しないと内容も頭に入らないので、自然と集中できる。
読み方としては、まず昨日読んだ章をざっと目を通し復習する。前日の復習が終わったらその日に読むべき章を読み進めていく。perlベストプラクティスに載っているプログラミング作法を学んでいくと、実践で試したくてうずうずしてくる。しかし、そこは我慢してひたすら読み続ける。さらにうずうずは増す。
まだかまだかと待っていた30分が経過したところで、うずうずを解き放ちプログラミングをはじめる。そこから昼までの時間はまさにゴールデンタイムとなる。1日につくるべきものは大体できあがってしまうときもあった。
この方法の良いところは、テンションが上がり、生産性が向上するというだけでない。
もう一つの効果として毎日継続して30分勉強したことをすぐに実践で生かせるので、理論面と実践面が合わさり、相乗効果でスキルが伸びていくという点である。プロジェクトが忙しいから勉強時間がないということもあるだろうが、最初に勉強しているのでそのようなこともない。
そして、おまけとして、1か月もすれば、perlベストプラクティスのような分厚い本(18章)でも自然に読破できてしまっているのである。継続による積み重ねはおそろしい成果をあげる。
100の実力がある人がモチベーションがあがらず50の力しか発揮しなかったとすると、50の実力をもった人が全力で仕事したのと同じ成果ということになってしまう。これでは高いスキル、知識を持っていても宝のもちぐされとなってしまう。
そして上がらなくなったテンションはいつしか習慣となり、なかなか抜け出せない状態となってしまうこともある。
イチローも「心に贅肉をつけてしまうとなかなか取れない」と言っていたが、まさにそのような状態であると言えるかも知れない。
そのようなことにならないためにも、プログラマは意識的に、積極的にテンションをあげていく術を知っておくことも大事ではないだろうか。
BP Study でそのようなエンジニアの心理学的なものをテーマに開催するのも面白いかもしれない。
今年の目標101エントリーまであと86