プログラマは好き嫌いを大事にしよう

最近僕は、Ansibleと遊んでいるのが楽しい。

DockerやRuby on Railsと遊んでいるよりも、何故か。

「技術的には、もっと廃れにくいものを勉強した方が良い」というようなことを考える。だがそれは損得勘定で。そんな風に頭で考えても、何の役に立たない。どうせ面白さを感じていなければ、勉強したって何も頭に入って来やしない。

楽しさ重視。あまりにも安直なフレーズだが、言葉じゃない、本能を働かせる。人間の意識の複雑な部分がキャッチする「面白さ」や「味わい」を大事にする。

プログラマは巨人の肩の上で遊んでいる

プログラミングなんて、出来合いの遊具で遊んでいるようなものだと思う。

たとえば ls コマンドでディレクトリ一覧が表示される。ただこれだけのことだって、過去に遡れば、無数の巨人たちの、膨大な積み重ねの上に成り立っている。

僕らはプログラミングのパーツを組み合わせたり、組み替えたりして使う。ひとつのプログラミングをするとき、本当に僕ら自身やっていることなんて、どんなに多く見積もっても、0.0001%もない。

99.9999% は巨人たちの力の上に成り立っている。僕らは巨人たちが力を動かしているのを、ただ見守るだけだ。

深みにはまり込むことがプログラミングの醍醐味だと思う

プログラムが思うように動かない。

プログラムを動かしているプラグインがうまく動いていないみたいだ。

そのプラグインを動かしているライブラリがうまく動いていないみたいだ。

そのライブラリを動かしている‥以下略。

たとえばそんな風に深みにはまり込む時、プログラミングの情報空間に脳を放り込んでいる感じがする。悪くない。こいつがプログラミングというやつの醍醐味だ。

 

スクリーンショット 2018-07-14 15.45.03.png

眠りはエンジニア最大の特効薬

睡眠は偉大だ。これで大抵の問題は解決する。

1日キーボードを触って解けなかった問題も、眠りから冷めた頃には解決していたりする。

たとえ完全な眠りには落ちなくても、うとうとしながら、プログラミングの問題について考え続けるのが良い。それだけで問題解決に近くづくことが出来る。たとえそうではなくても、考えること行為自体だけで、うっとりとした時間を過ごすことが出来る。

意識が考えるよりも、無意識に考えさせた方が良い。

無意識というとざっくりとした言い方だが、完全な無意識というよりは、意識の遊ばせ方の話だと思う。自分の脳や思考と、軽やかに遊ぶ方法を覚えるのだ。

仮眠をとったり、ちょっと散歩や運動をしたりするのも良い。

プログラミング上の問題は、意識的に思考した時間と、無意識的に脳に解決を委ねた時間とで決まる。

意識的に考えることは大前提だが、苦悩まではしなくても良い。苦闘するから問題解決するというわけでもない。むしろ問題が見えなくなる。

あくまで問題解決に寄与するのは、まずは問題と遊ぶこと、そしてその跡で、無意識的なものに解決を委ねることだ。

決して「苦しむ」必要は微塵もない。遊び方がうまければうまいほど、問題はい解決しやすくなる。遊びのプロになろう。

眠りを味方につければ百戦危うからず。

煮詰まってから眠るのではなく、最初から眠りを味方につけておきたい。たまたま偶然に眠りが着想に寄与するのではなく、積極的にこの効果を活用していきたい。

 

瞑想するエンジニアに危機が訪れる

僕は精神統一のトレーニングとして瞑想をたしなんでいる。これが最高の休憩にもなる。

だが今回、半期に一度の評価面談で聞かれたこと。

「何か宗教やってる?」

そして目立つ場所、というか社内での瞑想は実質禁じられることとなったのだ。

ねえマム、スティーブ・ジョブズにはなれないよ。

だが心配ない。

二年間の瞑想経験により、僕は仕事をするだけでもトレーニングが出来る段階に達していた。たとえば自転車に一度乗れれば、乗ることが自転車の訓練になるような。

プログラミングをしたりドキュメントを読みながら、心身のバランスを整える。これが僕の瞑想だ。

椅子の上であぐらをかくことさえ禁止されなければ、きっと大丈夫。

日本語よりプログラミングコードを書いていたい

最近ではそう感じるようになった。ここでいう日本語というのは、たとえばブログに書くような非プログラミングの文章のことだ。

プログラミングをした後に日本語を書き始めると、脳のコンテキストスイッチってやつが切り替わって、なんだか雑然とした感覚を覚えるというか、エネルギーが空費される部分があるような気がする。(コンテキストスイッチを切り替えること自体、脳のトレーニングになると聞いたこともあるが)

51対49

文章を書くこともプログラミングのコードを書くことも、とてもよく似ていると思うが、味わいは違う。

たとえばカフェで抹茶のティーラテを頼むか、ほうじ茶のラテを頼むかというような違い。その時に飲みたいドリンク、その時期の好みというものがある。

仮に抹茶のティーラテを飲みたい気持ちが51だとする。ほうじ茶のティーラテを飲みたい気持ちが49だとする。

これはほんのちょっとした差ではあるが、僕ら結局少しでも美味しい方、わずかでも美しい方を選ぼうとする。なので51のプログラミングを選びたい。そんな気持ちだ。

キーボードは夢を見るか

たとえば今日といえば、プログラミングすることが、とても良いリズムとして感じられる。キーボードを叩きながら、美しい朝を迎えることが出来る。プログラミングで。

できるだけ長い間、キーボードを叩いていたい。夢から覚めることなしに、恍惚に浸っていたい、いつまでも。

手を動かすエンジニアは馬鹿になれる

最近、手を動かすのが好きだ。とりあえず動かしてみる。何かエラーが起きても気にしない。気になれば調べたら良い。プライベートの開発環境であれば、別に何を壊したって構わない。最悪、新しいMacBookでも買えば良い。

プログラミングをするとき、まず手を動かすというやり方の良いところは、馬鹿になれるということだ。難しい顔をしてドキュメントとにらめっこしなくて良い。軽快にキーボードを鳴らしながら、何かが起こるたびに、対応したり、修正したりすれば良いのだ。

いわば本能でプログラミングと遊ぶことができる。それがたとえば気の利いたモジュールや言語であれば、エラーが起きた時にだって、何か分かりやすい道標を用意してくれている。説明書を読まなければ始められないようなゲームは捨ててしまえ。(いや本当は、説明書それ自体にも、深い味わいがあるのだけれど)

思うに、手を動かすのが好きかどうかということは、ある種の傍若無人さというか、勇気というか、子供らしさが関わってくるように思う。自分がよく分からないエラーが起きたり、開発環境が壊れるかもしれないということを、あまり恐がらないでいること。ジャングルに飛び込むような大胆さがあると良い。

僕も以前は、手を動かすということが苦手だった。それはたぶん、なにか不測の事態が起きたり、じぶんのよく分からないエラーに遭遇するのが嫌だというか、自分がコントロールできない状況がわずかでも生じるのが嫌だった。要するにきっと、臆病だったのだ。

僕らはプログラミングでの遊び方を覚えているか

「夢中でプログラミングを楽しめるエンジニアになる」

エンジニアの理想像が固まってから、僕のエンジニアとしての気持ちは、ずいぶんと楽になったように思う。

「面白いか、面白くないか」

それで全てを判断して良い。自分の体内感覚に忠実になる。本能に従う。

そして、他の判断基準は一切要らない。本当に一切。ひとさじさえも。ひとすくいさえも。

特にプライベートであればそうだ。判断基準の100%を衝動で決めて良い。

余計な99%と、重要な1%

逆に次のような理由、動機、行動はすべて捨てる。もしくは捨てられる限り捨てる。

取捨選択の捨をマックスにする。

  • 勉強になりそうだから、やる。
  • 勉強しなくちゃいけなさそうだから、やる。
  • 将来のキャリアに役立ちそうだから、やる。
  • 今後必須のスキルになりそうだから、やる。
  • 好きじゃないけど、なんとなく、やる。
  • 体が手を動かしたいと感じているのに、本を読む。
  • 読むのが辛いドキュメントを、無理して読む。
  • 興味が持てない疑問を追求する。

そもそも「プログラミングの勉強」という言葉が怪しい

世の中にあまりにはびこっている「勉強」という言葉。僕らはこの概念にどれだけ引きずられて、どれだけ損をしているんだろう。

プログラミングの初期衝動は遊びだ。

そこから数えて、僕らはどれだけ遠くに来てしまったんだろう。

世の中に流れているちょっとしたイメージや、悪気のない偏見や、自分で作り出した固定概念が、いちばん大事なものを、とても懐かしいものをも骨抜きにしてしまう。

糖分をなくしたハチミツみたいに。

僕らは遊び方を覚えているか

プログラミングはジャングルジム。プログラミングは遊園地。なまりきった体。遊び方を思い出そう。

プログラミングは人間関係に似ている

最初は誰かに声をかけて、知り合いを作るところから。そして少しずつ関係を構築して、友達になる。長年の相棒になれば心強い。

それ以外の人に対しても、ちょくちょく顔を出して、関係を途切れさせないようにすると良い。時間が空いてしまうと、挨拶もしづらくなる。頻度は少なくても良い。短い時間でも良いので、挨拶ぐらいはしておくのが良いだろう。

たとえあなたが人見知りでも、パーティーに出てさえいれば、交友の機会は増える。一人の友だちが一人の友だちを紹介してくれるかもしれない。PerlがRubyを連れてきてくれるかもしれないし、DockerはUbuntuやCentosたちと親戚同士だ。

こうやってあなたの人間関係は、だんだんとパーティーの様相を呈してくる。最初はひとりでこの場所に来たのに、いつの間にかすっかり仲間の一員になる。

プログラミングは人間関係に似ている。

なぜこんなに美しい世界を知らなかったのだろう

プログラミングの世界は美しい。今はそう感じている。

僕は浅瀬で遊びながら、海は恐いものだと思い込んでいた。だけど今は恐くない。

海というものは、自分で泳げるようになれば面白い。綺麗な海底の景色や、魚たちとだって遊ぶことが出来る。誰と競う必要もない。ただ自分の世界に浸ることも出来る。

もし息が続くなら、深くまで潜ればよいし、そうでなくとも、波打ち際で遊ぶだけでも肌に涼しさが感じられる。

 

プログラミングは原始的な行為だと思う。たとえば人間が太古の昔から祭や呪術に勤しんできたように。歩いたり、狩りをしたり、泳いだり、食べたり、寝たりすることと、本当に近い場所にあるのだ。このプリミティブな感覚をずっと感じていたい。

なぜこんなに美しい世界が、今までの僕には、見えていなかったのだろう。