魔法使いの弟子

いつか私もあなたみたいに

プログラミングでなにかつくらないといけないという焦りに対する対処法

プログラミングの勉強をしていると、上達するために「なにかつくらないと」という焦りが生まれることがある。

しかし、作りたいものなどパッと思いつかない。 作りたいものはないけどプログラミングの勉強は好きだ。

これは一見矛盾している。 なにも作りたくないのになぜプログラミングをするのだろうと。

しかし、私は気づいてしまった。 プログラミングは必ずしもなにかモノを創造するためにする行為ではないのではないかと。

Wikipediaによれば

コンピュータのプログラミング(英: programming)とは、コンピュータプログラムを作成することにより、人間の意図した処理を行うようにコンピュータに指示を与える行為である。

らしい。

もし、斬新で素晴らしいアイデアがあってそれがコンピュータを使って実現可能なら 今すぐそのアイデアをプログラミングすればいい。

だが、人間の手作業とプログラムの大きな違いを考えると プログラミングが効果を発揮するのは通常、人間がやるには怠くて大変な作業を自動化したときだと思う。

素晴らしいアイデアを考えることも重要だが、 その前に「やりたくないことリスト」を作ってそれらをプログラミングして自動化するのはどうだろうか。

やりたくないことは素晴らしいアイデアよりも簡単に思いつくし 「やりたくないことをやらないようにしたい」と思ったら、その時点でやりたいことは生まれている。

例えば私が面倒でなるべくやりたくないことは

  • 仕事で毎月送らなきゃいけない似たような内容のメールの作成、送信
  • 日本への一時帰国日の設定
  • 他人コードのレビュー
  • コンピュータ内の雑多なファイルの整理整頓
  • メールボックスにたまる広告メールの処理
  • 毎日ごはん何食べるかを考える
  • どんな服を買うべきか決める

パッと思いつくだけでもこれだけある。 プログラミングで簡単に解決できそうなものもあれば、そうでないものもある。

難しそうな問題は一旦プログラミングから離れて考えたほうが解決しやすい場合もあれば 新しいアイデアが生まれるチャンスにもなるかもしれない。

例えば、「どんな服を買うべきか決める」というのは無数の解決策が存在する。 彼女を作って選んでもらうのもいいし、 アマゾンのオススメ商品を買うのも手だし、 毎日同じ服を着ればいいと割り切る人もいるし、 はたまた機械学習を勉強して過去のトレンドから次に流行る服を予想するシステムを作ろうと意気込む人もいるだろう。

ともあれ、やりたくないことが自動化されれば時間が空く。 そうすれば新しいアイデアを考え、それを実装する余裕もできる。 空いた時間を必ずしもプログラミングに使う必要もない。 筋トレや読書、ブログ更新など広い視野でみればやりたいことは多いはずだ。

このように考えると、当初の焦りは消えるし、 プログラミングはやりたいことに時間を割くためのライフハッキングツールだと割り切ることができる。

「とにかくなにかをプログラミング」しなきゃ、ではなく 「これはコンピュータにやらせた方がいいからプログラムを書こう」という意識が重要だ。

ポール・グレアムも言っているが、 プログラミング言語なんてただの道具じゃないか。