何故プログラミングをするのですか

この話題、定期的(半年か一年に一回くらいのペース)でやっている気がするのですが、また書こうと思います。

めんどくさがりな人に向いている

なぜプログラミングをするかということなのですが、結局的なところ「人力でやれば一時間かかることを十秒で終わらせたい」からです。

経理などでエクセルに入力されたセルの合計を電卓でちまちま計算している人は流石にいないと思うのですが、例えばセルが 100 行あったとすると、「セルの内容を確認」「電卓に打ち込む」という作業を 1 秒で終えたとしても 100 秒かかります。ダブルチェックしてるとその二倍かかるわけですね。

関数を使えばSUM()を利用すればこれらは 10 秒でできます。作業効率が 20 倍変わってきます。

この程度のプログラミングであれば学習時間はほぼ 0 です。つまり、何のデメリットもなしに作業を効率化できます。

何故作業を効率化できると嬉しいのか

これは日本の企業の最も良くないところなのですが、先程の例を使って電卓で計算する A さんとSUM()を使う B さんがいるとします。

先程述べたように、B さんの作業効率は A さんの 20 倍です。同じ仕事をさせれば B さんのほうが 20 倍多く仕事量をこなすことができます。じゃあ B さんの給与は A さんの 20 倍かというとそうはなりません。単に同じ給料で B さんの仕事量が 20 倍になるだけです。

じゃあどうするかと言うと(早くできることを隠して)仕事を早く済ませるというのがベストアンサーになるわけです。

仮に A さんが 6 時間かかる仕事を与えられたとします。作業効率が 20 倍の B さんはその仕事を 18 分で済ませることができます。

で、残りの 5 時間 48 分は仕事以外のことをします。もちろん「仕事以外のこと」とは「遊ぶこと」ではありません。一応就業時間内は仕事に関係することをしましょう。

作業を更に効率化する

ここで大事なのは B さんはSUM()を使える自分に満足して学習することをやめてはいけないということです。

もし、作業するファイルが複数あればそのファイルを開いてSUM()を適用し~ということを繰り返さなければいけません。それをめんどくさいと感じるようになれれば良いです。

つまり「ファイルを開かなくても関数を適用できるような仕組みが荒ればもっと便利なのに」というような「より便利」な仕組み、発想ができるとよいわけですね。なので「残りの 5 時間 42 分でそのような方法を学ぶ」のです。

18 分の作業時間を更に減らすために 5 時間 42 分勉強するのは馬鹿らしい気もしますが、学習とは先行投資なのです。就職するまでに(おそらく高校卒業までは)18 年間学校で学んできたと思いますが、あれもその後の 50 年以上の人生を楽に過ごすための先行投資です。

ここで「今の 18 分の作業時間でも十分満足しているし」となってしまってはダメということですね。

もし仮に更に良いシステムができて作業時間が 5 分になったとすると 1 回の作業で 13 分の差が付きます。5 時間 42 分の学習時間を考えると 27 回作業をするのであれば「トータルの時間的には得」になるわけです。

そのあたりの損得勘定は必ずできるようになっておきましょう。目先の利益だけを追求する考え方は「貪欲法 (opens new window)」と呼ばれ一般的にあまり良くない考え方であることが証明されています。

貪欲法について

もちろん、貪欲法が最適な考え方である場合も存在する。

先行投資が活かされない場合もある

かといってここまでの話が全部うまくいくとは限りません。

せっかく作業効率化するプログラムを書いたのに仕様が変わってしまいそのままでは使えなくなったりとか、その仕事がなくなってしまったりとか、要因はいろいろあります。

その時は「先行学習分のリターンがなかったなあ」と思うかもしれませんが「学習して得た知識」自体に 5 時間 42 分の価値があると考えましょう。

次、似たような作業、あるいはそれを効率化するプログラムを書くときにその知識を利用することで学習時間を 5 時間 42 分短くすることができるのです。

活かしきれなかったからといって損、というわけではないのです。

まとめ

ぼくは基本的にめんどくさがり屋です。

10 分で終わる作業があったとしても、似たような作業が繰り返されそうだと思ったら最初の一回目をやる前に一時間勉強してそれを 10 秒で終わらせられる方法を探します。

そして、作業の超高速化はプログラミングでできる場合が多いということです。なのでぼくはプログラミングを学びます。

本来自分がすべき作業をプログラムに丸投げして、プログラムが頑張っている間自分はスヤスヤしていられます。めんどくさがり屋にとっては最高の環境です。

「仕事している自分が好きな人」にはプログラミングは向いていません。頑張って電卓を叩いていると良いでしょう。