Skip to content
自分が自分のために自分で作るプログラムほど、面白いパズルはない(1)
note記述記事
2023-12-28

#年末の過ごし方
何か年末年始企画があるみたいなので、ちょっと毛色を変えてホビーとしてのプログラミングについて自分の考えを書いておきます。

誰にも怒られない、誰も困らない

職業プログラマ、ソフトウェアエンジニアの方は日々お客様システムの構築/運用で、お客様の小言とか突然のインシデントとか定期メンテで休日をつぶされながら頑張っておられると思います。
でもソフトウェアを仕事として選ばれた方は、元々物作りとかが好きな方ではなかったでしょうか。でも仕事としてのソフトウェアは責任問題とかスケジュールとか工数管理とか結構きついですよね。
でも、せっかく得られたプログラミングスキルですのでたまには自分のために使いませんかというご提案です。

ホビーとして考える自分のためのプログラミングも結構面白いものです。これは非常に高度なパズルゲームの様相があります。
しかもこのプログラムは落ちてもいい、24時間動かなくてもいい、誰にも怒られない、誰も困らない、責任を感じる必要はない。
とりあえずは保守を考える必要ない、運用設計を考える必要もない、多くの場合コストを考える必要も少ない、パフォーマンスも考えなくてよい、セキュリティもそこそこでよい(センシティブな情報は入れない)、テストは好きなだけ(テストこそ楽しいという考え方もある)、テストしなくてもよい。
飽きたら削除でもいいし、HDDの奥にかくしておいてもよいし、メディアに書き出して記念品にしてもよいかもです。そこそこ他の人にも役立ちそうならGitHubとかでパブリックにしてもよいかもです。

ホビーとしてのプログラムは「ピースの最後まで埋まらなければ完成しないパズル」

フィギアとか絵とか縫い物とかは半分出来たとか胴体が出来たとか、出来た部分だけを眺めて楽しむこともできます。あと少しというのも目で見て分かる。半分の出来で納得したりSNSに写真をアップしたり、あと少しと考えてモチベーションを絞り出すことも出来ます。

プログラムはほとんどの場合、最後まできちんと動かないと納得出来るものになりません。半分出来たとかというのもブラックボックスだから目で見て納得することができません。作ってるうちに見えなかった問題が見えてきていつ終わるかわからない事態になることもある(仕事でやらかすとドツボですよね)

仕事でやる分にはいろいろ対策方法はあるが、個人の趣味ではかけられる時間/工数は限られています。機能を分割してインタフェース仕様(つまりドキュメント)を管理するほどの工数はなかなか確保できません(出来たとしてもそこを趣味として楽しくやれますか?)。

途中までしか動かないプログラムを見て「うん、ここまでよく出来た」なんて納得感は得られないのです。
つまり**「趣味のプログラミングはモチベーションを保つのが恐ろしく困難」**です。
最後に動くまでモチベーションが持たなければすべてが水疱に化し、徒労に終わります。動かないソースなど他人どころか自身にさえゴミにしか見えない。2週間もたてば自分でも何を書いたのかわからなくなります。
私も思いついては途中まで書いて放置したプロジェクトファイルが何十もありNASの底で眠ってます。

モチベーションこそ、このパズルゲームのライフゲージである

ゲームだと自キャラのゲームオーバーを決めるのはだいたいヒットポイント(HP)やライフゲージみたいなものですが、プログラミングパズルの場合、自身のゲームオーバーを決めるのは「モチベーション」である。
モチベーションが0になったらゲームオーバーです。
だからモチベーション維持のためにあらゆる方策を打つのがこのパズルゲームのキモです。
注意すべき点は**「モチベーションはいつか必ず0になる」**ことです。いくら好きでも必ずいつか飽きます。ゲームもいつかゲームオーバーになるものです。それまでにゴールに着くかです。ラップタイム制限のあるレースゲームのようでもありますね。
でも「モチベーション0になってゲームオーバーになっても、誰にも怒られない、誰も困らない、責任を感じる必要はない」のです。
おいしい物でも食べて別のことで遊んで、またやりたいと思ったら別のテーマで始めてよいのです。

次はモチベーションを保つ手法を書く予定です。

(初出 note https://note.com/marble_walkers/n/n99d6affb773d )