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

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

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

51対49

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

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

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

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

キーボードは夢を見るか

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

Githubは遊園地

しかも入場無料。遊び放題。ディズニーランドよりも楽めるんじゃないだろうか。

コードを読んだり動かしたり、IssueやPRを送ったり。そんなことを繰り返していると、永遠にGithubだけで遊べそうな気がしてくる。事実、そのとおりなんだろう。

Githubは「設計図共有サイト」である以前に、無料の遊園地だ。今さらながらそのことに気付く。こいつはすごい遊び場だと。

何も真面目くさって考える必要はない。遊園地なんだから。

 

僕らは「OSSへの貢献」の意味を履き違えていないか

Contributeとは、まさにその名の通り、貢献するという意味だ。

人の役に立つ。尽くす。助ける。それが本質であり、全て。

僕らはそもそも、ここを勘違いしていないだろうか。

たとえば就職に関して言うと、OSSへの貢献を採用基準にしているIT企業も多いかもしれない。たしかに分かりやすい基準ではある。

だけど本当は、エンジニアとしてのキャリア、技能、ステータス、そんなものはOSSへの貢献とはまるで関係ない。「貢献」の本質はそんな場所には存在しない。

なぜ Contribution という言葉が使われているのかを、考え直してみよう。

「OSSへの貢献」というと、僕自身も以前は、どことなくハードルが高いイメージを持っていた。

「すごい人達が、すごい開発をしてるんだろうな」というイメージ。

だが違う。実際のところは、もっとフランクに、雑多に話し合うかのように開発を進めているレポジトリが多いように思う。

貢献の形は色々ある。

たとえば1個のスクリプトに、裏技指定みたいな、隠れた環境変数指定を見つけた。それをREADMEに1行追加する。それだけでも「貢献」だろう。

たとえば動作に問題を感じた部分に関して、黙らずにIssueを送る。これも貢献のひとつだ。逆に問題を見つけたのに黙って見過ごすことは、悪のような気がする。

Contributionは人のためならず?

たとえば、あなたのPRがマージされた時に「認められた気持ち」になるかもしれない。「やったぜ、OSSに貢献してやった!」と思うかもしれない。

だけどごくストイックに言えば、それもどこかおかしい。OSSへの貢献とは、別に自分が認められたわけじゃない。「人の役に立てた」。ただそれだけだ。

僕らエンジニアは、もっと本来の「貢献」にコミットして良いはずだ。