「単純作業好き」は「プログラマ」向き

どれだけ効率を上げることができるか?

プログラミングの至上命題は「効率を上げること」である。
プログラムが行う演算は本来プログラムなど用いなくても可能であるが、圧倒的な計算速度というアドバンテージを利用すると人力よりはるかに短い時間で演算を行うことができる。世の中のすべてのプログラマはそのためにプログラミングをしている。
趣味でツールを作ったりするプログラマも多いと思うが、(私含め)彼らの目的はただひとつ、

地道に手作業>プログラミング時間+プログラム実行時間

である。この差が大きければ大きいほどプログラマは時間を節約することができる。そうするとほかの作業の時間を短縮するプログラムを書くことができ・・・というすばらしい好循環が待っている。

実際の操作に基づいてUIを設計する

作業短縮のための自動処理プログラムには2つあり、

  • 例えば夜間バッチ処理など、本当に人間は何もふれることがなく、ただ自動処理だけをプログラムすればよいもの
  • Photoshopなど、人間との対話で自動処理を行うプログラム

と分けることができる。大きな違いは「UIの有無」である。
UIのあるプログラムでは、本来の自動処理のルーチンによるパフォーマンスと、さらにもうひとつ「作業フロー」が実作業時間に非常に大きい影響を与える。

  • ボタンの文字や位置などが広く利用されているアプリケーションに準ずる設定だとユーザに違和感がなく、また新規学習の時間が減る
  • 同じ処理なら2クリックよりも1クリック
  • ファイルを保存する場合はファイル名の自動生成なども積極的に行う

等、この利用感の向上には地道な検証が必要になる。これを突き詰めると作業時間を1秒短縮するために開発に1時間かかったりするわけ。結果、本末転倒になったりするんだけど、一度改善を行えば今後は永遠にその作業は1秒短縮できることが約束される。そのへんのマネジメントの結果、自分専用に作ったツールなんかはエラー処理完全無視とか、バグ放置とか、中途半端なものになる。(多分みんなもそうだと思う)

プログレッシブ

そうやってちまちま利用テストをしていると、毎度毎度の同じ作業について「あれ、この作業自動化できるんじゃね」と思って機能拡張をすることになる。結果、恐ろしいまでの自動処理化がなされたツールができたりする。こういうところにも、単純作業大好き人間のアグレッシブな「工夫」「最適化」が生かせるところである。
自動処理ツールについては、プログラミング能力よりもそういうカイゼン能力のほうが重要だと思う。例えば学生のころにコンビニバイトとかレストランの洗い場とか、工夫がモノを言う単純仕事をしたことがある人間はきっとIT業界で思う存分能力を発揮できると思う。