読者です 読者をやめる 読者になる 読者になる

How IT Works

プログラマーやっています。技術よりも人間学的なところが好きです。

生産性を高める習慣

生産性を高めるもの

 プログラマーであれば誰でも、「より少ない工数で問題を解決できる技術」を身につけるべく日々努力していると思います。

 新しいツールを導入したり、新しい設計方法を試してみたり、既知の問題は極力自動化したり……、様々な方法で生産性の向上に努めているはずです。

 こうした解決方法も常に導入していくべきだとは思うのですが、個人的にはまず個々人が自分の能力を出しきることが大事だと思っています。

 プログラマーとしての生産性というと知識量や経験がやはり重要だとは思うのですが、それ以外でも

  • 集中力の高さ
  • 視界の広さ
  • 論理的な思考力
  • 問題解決のための想像力

 といったアナログ的な能力も同じように高めていく必要があると感じています。

 一朝一夕でこうした能力を身につけることはできませんが、習慣を変えることである程度までは生産性を補うことができます。

 今回はそうした習慣について書きます。

生産性を高めるための習慣

焦っていることに気付く

 プログラミングをしていて難しい問題に当たると、どうしてもパニックになることがあります。

 そういうときはとにかく落ち着くことです。パニックになるときは大抵同時に2つ以上のことを考えているです。

 止まるということはとても難しいです。なんとなく答えが出そうという状況だと、もう少し頑張れば行けるんじゃないかという気持ちになります。

 そういう気持ちを抑えて、できる限り1つずつ小さな問題に分解して解いていくことです。これができるとできないでは、問題解決能力がずいぶん変わるように思います。

とにかく表現してみる

 プログラミングで詰まった時はいつでも、白紙の紙に思いついたことを書くようにしています。

 UMLだったり、アーキテクチャの図であったり、単語の羅列だったり、色々とパターンはありますが、困った時は何かしら視覚化してみると問題がよく見えるようになってきます。

 また、困った時は誰か捕まえて、相談してみるといいと思います。

 プログラミング上の問題を相談相手が解決してくれることはあまりないのですが、人に話すことで問題の全体像が見えてきます。

 問題の分解もそうですが困った時に、1歩立ち止まって別のアプローチをできると、問題解決のスピードはぐんと上がるように感じます。

 ちなみに、自分は会社のデスクにはいつもこのスケッチブックを置いておいて、何か思いつくたびに書きつけています。

 小さなアイディアやTodoはこれくらいの小さい紙がいいですね。所詮100円なので、躊躇せずに書けるのがいいです。いい悪い関係なくとにかく書くことで頭が働きます。

 うちの会社の優秀な技術者はみんな白紙の紙をいつも持ち歩いているので、やはり思考にとって表現は大事なんだろうと思います。

 そして、みなさんとにかく図やイラストでの表現がとてもうまいです。論理だけでなく、図解思考というのができているんでしょうね。

責任を持つ

 誰かが何とかしてくれる、どうせ納期には間に合わないという他人任せな思考をしていると生産性は落ちます。

 無茶な納期・仕様変更や不当な人事評価など理不尽なことを押し付けられると、責任を放棄したくなる瞬間は来ますが、そこで我慢してやるべきことができるのがプロの技術者だと思います。

 それに無茶に対してどのように対処できるのかというところを考えて仕事することで、プログラマーの能力というのは向上するものです。

 そのため、できる限り自分の仕事に責任を持ちましょう。そして、言われた納期で最高の品質を目指すようにしましょう。

 最初は理不尽に感じることのほうが多いですが、この習慣の有無が将来的に大きな差になると思います。

定時に帰ることを目指す

 残業してもいいと考えると、生産性はぐんと落ちます。納期がない仕事と同じようにだらだらしがちです。

 そのため、開き直って毎日定時で帰りつつ、任された仕事をこなせるように努力しましょう。

 こちらのほうが高い集中力をキープできますし、効率よく仕事をこなす方法を考えるようになります。

 そのため、最初から残業を頭に入れるような働き方ではなく、絶対に定時で変えると決めて働いたほうが自分の成長につながると思います。

集中を使いこなす

 集中している時間=作業時間です。集中していない時間は仕事の中ではできるだけ、減らしていかないといけません。

 大事なことは、細かい作業を間に入れないことだと思っています。電話もそうですし、メール・RSSReaderの処理などが作業の途中で入ると集中が切れやすくなります。

 そのため、できるかぎりそういった細切れの作業はプログラミング中に入れないように努力します。

 また、集中できる時間帯が誰にでもあります。自分は朝と昼一です。こういう時間に難しい作業を当てて、簡単な作業は後に回すようにします。

 あとは、集中するのには訓練がいると思います。毎日できる限り自分のできる最高の集中力を発揮する時間を作ったほうがいいと思います。

 人と話したり、twitterを見ながらだらだら作業する習慣がついてしまうと、それが癖になります。そのため、1日のある時間は一人でひたすら集中する訓練を積んでおくと生産性が上がります。

まとめ

 あたりまえのことが増えすぎて思ったようには行かなかったのですが、こういった思考や集中といったテーマに毎日取り組んでいくことが大事だと思います。

 どうしても、新しい技術や知識ばかり追いがちになるので、こういった無形の力もスポーツと同じでトレーニングしていくことでよりよい技術者になりたいです。

 今回の記事のような話は以下の本が詳しいです。

 浅く広くという感じでほとんど自己啓発本のような感じですが、納得できることは多いです。

 興味があれば、手を出してみるといいと思います。