これは何
プログラミングを楽しむ気持ちと実務のエンジニアリングを続けるモチベーションの折り合いをどうつけたらいいのか悩んだ記録です。 頭の中をそのまま書き散らした駄文なのでおかしな文章になっているかもしれませんがご容赦ください。
ちなみにこの記事は人間が書きました。
最近思うこと
今までとにかく好きで続けてきたプログラミングだけど、大部分のコードはAIエージェントが書いてくれるようになった。 かつてあんなに楽しかったプログラミングという活動は、今では日本語で指示を書いて「あーでもないこーでもない」と頭をひねるだけになり少し寂しくなる。 もちろん、「つまらない」とは思っていないが、自分の意思とは違う形で「楽しさの質や方向性が変わってきた」、というか「変えないとモチベーションを維持するのが難しくなってきた」と感じる。
そもそも何があんなに楽しかったんだっけ
趣味プログラミングといっても多種多様な楽しみ方がある。思いつく要素を挙げてもきりがない。
- 競技プログラミング
- CTFなどのコンテストに出場する
- アプリを作る
- ゲームを作る
- OSSに貢献する
- 自分用の便利ツールを開発する
- 既存のソフトウェアを別な言語で再実装してみる
- スポーツやゲームなどの別の遊びを作ったり、その活動を補助するソフトウェアを作る
- 計算機の理論体系を研究する
いろいろあるが、これらの趣味に共通していることは目的だけではなく 過程を楽しむ ことにあると思う。
自分がプログラミングを始めたときは、Linuxデスクトップをカスタマイズするためにシェルスクリプトを覚えたり 日常的な作業を自動化するためにGoやPythonを覚えようとしていたのが取っ掛かりだった気がする。
当時、「何かを作りたい」というモチベーションは特になかったが、純粋に「黒い画面に変な呪文を打ち込むとカラフルな文字がピロピロと出てきて思い通りにコンピューターが動いたり動かなかったりして草」という、まさにその過程こそが楽しかった。
今でこそ作りたいものや解決したい物事はあるが、自分の中のモチベーションの根源はやはり純粋にコンピューターをいじることそのものが楽しいということだ。
また、技術を楽しんでいる人を見るのも大好きだった。コミュニティで「こんなの作ったよ」「いいね」という会話を見るとワクワクしてくる。
今でもこれらはすごく楽しい。ただ、最近ではAI slopとそれに対する揶揄の声があったりOSS開発者が大量の低品質PRやサプライチェーン攻撃に疲弊している様子が目に入ってきたりと、やや殺伐とした雰囲気が漂ってきている。
我々が愛していた「パソカタ」はどこへ行くのか
コードを手書きするのが当たり前だった頃から少し進化して、 チャットにエラー文をコピペしては手動でデバッグしてコンパイラのエラーと格闘する期間がしばらく続いた。 少しして、GitHub Copilotが出てきたとき、Tab叩くとボイラープレートのコードの続きがバチッと補完される様子を見て衝撃を受けた記憶がある。
うかうかしている間にコーディングエージェントが全部コードを書いてくれるようになり、「もう一切コードを読まない」と宣言する人も現れるようになった。 世の中の流れから見るとやや周回遅れではあるもののClaude Codeを使うようになり、コードは中間生成物になり仕様書を補助する参考文書の一部のような扱いに近くなってしまった。
最初は「フフッ、貸せ、プログラミングってのはこうやるんだ」と意気込んでいたのに、気づいたら「やっておきました」と部下が出してきた成果物を確認する管理職みたいな気持ちになってきた。
そんなこんなで書く対象が実務で向き合うレイヤがどんどん上にシフトしていった。 もちろん、人間に近い問題に向き合うためには良いことだと思うし技術の進歩は喜ぶべきことなのかもしれない。
でも、コンピューターをいじっていて楽しかった記憶や「エディタの手触り」「コードの書き心地」「型がハマる気持ちよさ」みたいな感覚が少しずつ失われてしまった。純粋にパソコンをカタカタすることでしか得られない、FutureBassを聴いているような静かな高揚感があった。
便利さを得てしまった今、同じことをしてもその感覚を取り戻せるだろうか?
過程を楽しむためには、ある種の不便さが有効な場合がある。キャンプや自炊が良い例だと思う。 しかしながら、あまりにも便利な生活に慣れてしまうとあえて不便な方法逆戻りしたくなるモチベーションはかなり限られてしまう。
今後はどう楽しめばいいのだろう?キャンプはキャンプでも便利なギアを多用したモダンな方法で便利さは享受しながら自然の面白さに目を向けるアプローチが良いのだろうか。(自分でも何を言っているのかよく分からないが)
実務で求められるものと、目的と手段
実務で求められるのはやはり、業務上の抱えている問題を見つけ、言語化し、今の立ち位置とあるべき姿を定義しながら技術的なレイヤに落とし込み解決すること、ユーザーに届けてサポートするところまできちんと完遂させること。つまりはビジネス的な目的のために技術を手段として使うことだ。これは当たり前だしその通りだと思う。
でも、それは過程だって大事じゃないのか?何が「手段の目的化」なのだろう?「目的がビジネスの場合は」という前提が抜けていないだろうか?
「これからの時代は技術『よりも』○○力が大事」なんて言説が目に留まるときには「え?技術屋さんなのに?その専門性はだれが保証するの?大丈夫?」と時々思う。
何が好き?何が楽しい?
「(広い意味での)プログラミングが好き」と一言にいってもいろいろなモチベーションがある。
- アプリケーションを開発するのが好き
- 人と競い合うのが好き
- 問題を解決するのが好き
- 収益化につなげるのが好き
- コンピューターを学ぶのが好き
- 作業を自動化するのが好き
せっかく趣味でやるなら、「手段の目的化をやめよう」という言葉で心を乱されずにそれを逆手にとって「自分は何をするのが好き?何をしているのが一番楽しい?」「楽しむことを目的にするには?」と自分の素直な気持ちに問いかけてみるのが良いのではないかと思う。
5分で終わる作業を全自動化する道具を作る、その道具を作る道具を作るのが目的でもいいし、車輪を再発明して「やっぱ車輪って丸い方がいいだろ」という自明な結論にたどり着いてもいい。 なぜなら趣味だからだ。
割り切り、そして過程の楽しさを取り戻す
人間がメインで書く対象が形式言語から日本語に代わって、明らかに便利になった。 求められるものも自然と上のレイヤにシフトしていって、職場や業務フローが抱えている問題の解決に集中できる時間が増えた。
でも、「楽しいですか?」と聞かれて素直に「はい!」と言えないのがもどかしくもあり「その解決で誰かがハッピーになれるならいいじゃん」「お仕事だからね、仕方ないよね」と自分に言い聞かせている部分でもある。
そこを「割り切り」と見るか「それでも過程を楽しむことをあきらめない」べきか?
この匙加減が難しい。どうすればいいんだろう? とにかく、やり方が変わってもいいから楽しむことを忘れたくないと心の底から強く願っている。
頭のモヤモヤが結局解決しないままとりあえずこの状態で書き留めてみた。 ここに書いておけば未来の自分が答えてくれるかもしれない。