プログラミングを 2013 年に初めて、もう 9 年目になる。
僕が初めて書いたプログラムは、JavaScript だった。何を書いたのか忘れてしまったが、簡単な Web サイトにアニメーションを付与した、とかだった気がする。大したプログラムではない。だけど、自分が書いたコードがブラウザで動く、動いている、ということにこれほどまでない感動を覚えたことは頭から離れない。
それからだ。僕にとってプログラミングというのは、生きがいに近いものになった。新しい知識を吸収し、咀嚼し、頭の中でアイデアを創造し、この世の中に生み出す。その一連のプロセスに、それまで何も生み出せなかった学生だった僕は、熱狂した。
それから、iOS プログラミングをちょっと齧った。中高生にプログラミングを教えるメンター活動を二年程していた。そこで iOS の講師を担当することになったのがきっかけだった。正直、当時の僕はプログラミングというものをよくわかっていなかった。Computer Science の基礎も知らないし、アルゴリズムも比較できないし、ネットワークもよく分からない。それでも、動くものを作ると言う経験は楽しかった。
社会人に出てからは、趣味で Node.js でバックエンドや CLI ツールを書いていた。仕事では、Android プログラマーをしていた。正直、自慢できるキャリアではない。それなりに大きいアプリだったけど、そのチームにおける僕の役割なんて、大したものではなかった。
仕事がうまくいかない気晴らしに、くだらない Web サイトもよく作った。中途半端なフロントエンドの知識と、中途半端なデザインの知識を組み合わせ、それっぽい成果物を作って、満足していた。正直、それだけで幸せだった。
社会人としてプログラミングを経験する年次が増えるにつれて、経験する言語は増えていった。Ruby を覚え、Rails アプリケーションを書くようになった。React.js と TypeScript を覚え、それなりの規模のフロントエンドアプリケーションを書くようになった。Golang を習得し、それなりにパフォーマンスが求められるバッチアプリケーションや並列処理も書けるようになった。デザインパターンや設計アンチパターンも一つずつ覚えていった。
Site Reliability Engineer (SRE) になってからも、「Software Engineer 上がりの SRE」と言う位置を頑なに持ち続け、機会があるごとにプログラミングを書いていた。仕事の都合でプログラムを書く機会が減ったときは、趣味でプログラミングをしていた。書きたい、と思ったものはなんでも書いた。家計簿アプリも作ったし、ブラウザの拡張機能も書いた。あらゆる種類の CLI ツールも書いたし、構成管理ツールも書いた。OSS でトップスターになるような有名なライブラリは今のところ出ていないけれど、少人数に使われるようなパフォーマンスツールやインフラ構成ツールも書いた。
web3 やブロックチェーンもキャッチアップしている。Haskell や Lisp も学んだ。Rust ももちろん学んでいる。新しいプログラミング言語を学ぶというのは、どうしてこんなに楽しいんだろう。
自分のアイデアを具現化し、世の中に出し、誰かの役に立つ。たくさんの人の役に立たなくても、少なくとも自分が満足できている。その経験だけで十分だった。自分を表現する手段としてのプログラミング。自己を規定する枠としてのプログラミング。アイデアの源泉を常に与え続けてくれた。学習するモチベーションを常に与え続けてくれた。
自分が生まれてから、徹夜してでもやったものって、数える程くらいしかない。ゲームと読書。親友との語らい。そしてプログラミングだ。
海外で、Software Engineer としてキャリアを積んでいると、「キャリアをどう積んでいこう」とか「どうリーダーシップを発揮していこう」とか「転職市場を加味しながら次はどの資格や技術を獲得しようか」と言うことを考えるようになる。いや、考えてしまう。
ジョブセキュリティ。レイオフ。ストックオプションに RSU。昇進に、ボーナス。イベント登壇に会社ブログの執筆。GitHub のスター数に、自作ライブラリのダウンロードされた回数。技術ブログの反響に、引用された回数。技術書展への執筆、雑誌への寄稿。取り組んだプロジェクトの数値で出せるインパクトと、それによって創出した売り上げ。
キャリアを積むことを考えるために考えを巡らしていると、とある瞬間に、ふと、虚しくなる。あれ、こんなことを考えたくてプログラミングの世界に入ったんだっけか。
Software Engineer として、社会に価値あるソフトウェアを作り、世界を良くしたい。これは人生の目的として、揺るぎない。
でも。単なる Programmer として、ただプログラムを書いていたい、そんな気持ちになる時がある。あくまで根底にあるのは、プログラムを書くのが好き、と言う気持ち。プログラムを書いている時間が好き、と言う気づき。
そんなことをつらつらと考えながら、僕は今日もプログラムを書く。ただ書きたいように、自分が満足する、プログラムを書く。それが動けば手をあげて喜び、それが動かなければ苦虫を潰したような顔をしながらデバッグする。
それが誰かのためになるといいな、と思いながら。でもその前に、自分が満足するプログラムを書きたい、その気持ちは大切にしたいと思っている。
やっぱり、プログラミングって楽しいね。プロとして働く Software Engineer である前に、一人のただプログラミングが好きな Programmer である。プログラムが動けばアホみたいに喜ぶ、単純な思考回路を持つ一人の人間である。
アナログで出来た複雑系の現実世界は、修正しきれないエラーに満ち溢れている。でも、「プログラミングが好きだ」と言うバイナリよりも単純な気持ちは、いつでも取り出せるように、忘れずにディスクにしまっておこう。