世界を動かす技術を、日本語で。

「愚かな」コードを書いてみよう

2025年9月29日原文(spikepuppet.io)

概要

  • 「バカな」コードを書くことの大切さ についての体験談
  • 音楽家志望からプログラマーへの転身 の経緯
  • 失敗や試行錯誤を通じた成長 の重要性
  • 新しい技術やツールに挑戦する楽しさ
  • 自分自身にもっと寛容になるべきだというメッセージ

「バカな」コードを書こう

  • 2010年に学校を卒業、音楽家を目指していた経緯
  • 母親の勧めでTAFE(オーストラリアの職業訓練校)に入学、コンピュータとゲームが好きだったためコンピュータ系コースを選択
  • プログラミング未経験 だったが、VB.NETの教科書を使って独学
  • 苦労しながらも理解できるようになり、プログラミングに夢中
  • ゲーム開発のディプロマや学士課程で多くの「バカな」コードを書いた経験
  • ゲームジャムや趣味、大学、キャリア初期での試行錯誤
  • こうした経験がスキル向上や学びにつながった実感

新しい技術に挑戦する姿勢

  • 最近はJavaScript/TypeScriptやNodeJS、Denoなどのランタイムを学習
  • James SnellのNode Streams APIの講演をきっかけに、まずは簡単なストックティッカーを作成
  • 「なぜ最初は躊躇したのか」と自問自答
  • インスピレーション用の小さなアプリを作る際も同じ迷いを感じたが、Denoのバイナリコンパイルを試したくて結局作成
  • 完成したことで大きな満足感、新しい技術を使うことへのワクワク感

自分に寛容になろう

  • 長年の経験から自分のコードに厳しくなりすぎていたことに気づく
  • 「バカな」コードを書くことを恐れる必要はないという自己認識
  • 自分のためのコードは、綺麗でなくても良いという許容
  • 新しいランタイムや言語にどんどん挑戦し、壊して学ぶ姿勢の重要性
  • 学び続けるマインドセットがキャリアや趣味の楽しみに直結するという実感

読者へのメッセージ

  • 自分自身への寛容さを持ち、「バカな」コードを書くことを恐れないことの推奨
  • コードに「バカ」も「賢い」もない、ただのコードであるという認識
  • 自分の好奇心を大切にし、挑戦と学びを楽しむことのすすめ

Hackerたちの意見

写真の授業での量と質のグループを思い出すなぁ。やってみることで、いろいろ学べるんだよね。遊びに行こう!

量には独自の質がある。

その結論には大体同意するけど、ちょっと naive すぎるかも。量のグループはメトリックを「ハック」する簡単な方法があるんだ。何でも写真を撮りまくるだけでいいから。カメラをセットして、昼夜問わず自動で写真を撮らせることもできる。正直言って、動かない壁の前でやってない限り、良い写真が撮れる確率は高いと思う。サンプルが十分あれば、ほんの小さな確率でも期待される結果になるからね。でも、本当の魔法の成分は説明にあると思う。>「グループは自分たちの作品の質を気にしなかったので、照明や構図などを試す時間を持っていた。」この文を読むと、「量のグループは成績に自信を持っていたから、プレッシャーなしで創造的になれた」ってことだと思う。でも、もし実験を変更して、学生を曲線で評価し、撮った写真の数に比例させたら、結果は違ってくるかもしれない。誰かが「ただ写真を撮りまくってるだけだ」って伝えるだけで、成績が不安定に感じるかもしれない。この状況では、質のグループよりも探索や実験の能力がさらに少なくなると思う。でも、メッセージは正しいと思うし、創造的な仕事や主に頭を使う仕事(コーディングを含む)ではこの戦略が正しいと思う。プロセスが創造性に依存するほど、このタイプの探索や自由に多くの時間を割く必要がある。研究のような仕事では、これが構造の基礎になるべきで、評価基準はほとんど取り除いて、基本的にアドホックな性質を受け入れるべきだと思う。コーディングのようなことでは、もっとミックスが必要で、その適切なミックスは実際の目的に大きく依存すると思う。だから、何がその目的なのかを考える上で、この区別が重要だと思った。

2010年に学校を卒業したとき(もうずいぶん前だね)、ミュージシャンになりたいと思ったんだ。パンクバンドが現場で学ぶなら、俺もできるだろうって。だけど、母さんは何かをする必要があるって言ってた。面白い偶然だよね。俺もロックスターになりたかったし、少なくとも成功したミュージシャンになりたかった。母さんもそれを止めたんだ。彼女の主張は、「学校で学べないなら、楽しいことを学ぶために学校に行きなさい、例えば数学とか。それからロックスターになれるかもよ。プログラマーにもなれるし、プログラミングはもう学んでたから。」ってことで、数学専攻で大学に行って、最終的には物理学の学位を取得した。今も音楽をやってるけど、フルタイムではなく、日中の仕事で自分を支えられる安心感がある。

幸運なことに、成功しなきゃいけないプレッシャーなしでミュージシャンを目指すことができるよ。この道を進んでいけば、いつか自分自身で成功を宣言できる日が来る。

学校でロボティクスを専攻しなかったことを本当に後悔してる。プログラミングがしたかったから、コンピュータ工学を勉強したけど、授業ではあまり吸収できなかったな。でも、学校が持ってたロボティクスの設備や指導を受けることはもうできないだろうし。もちろん、何かを試すのに遅すぎることはないけど、比較的小規模なクラスでの構造化された高等教育にはかなわないと思う(ロボティクス専攻はたしか24人くらいだったかな?)。

面白い偶然だね。俺もロックスターになりたかったし、少なくとも成功したミュージシャンになりたかった。 今も音楽はやってるけど、フルタイムじゃなくて、日中の仕事で自分を支えながらやってる。人によっては「夢を追いかけなきゃ後悔するよ」って言うけど、これは自分の選択を後悔してる人が言うことだよね。他の人は「夢を仕事にしちゃダメ、そうすると特別じゃなくなるから」って言うけど、これは夢を追うことが何を意味するかを誤解してる人が言ってる。俺はこう思う。幸せは追いかける夢や選んだ職業にはない。毎日自分が何をするか、どう見るか、そしてそれを持つことを許すかの選択にあるんだ。毎日を構成するものは重要じゃない。でも、これは俺の考え。

自分のコードの多くは最初はバカみたいだけど、徐々に洗練されていくことを願ってる。

まずやってみて、それから正しくやって、最後にもっと良くする。

確かにそうだね。最初は「バカな」コードを書いて momentum を作るべきだと思う。早くコードを書き始めれば、早く自分のアイデアを形にできるし、解決しようとしている問題のメンタルモデルの欠陥を見つけられる。昔は先を考えたり、計画を立てたりして「設計」しようとしてたけど、ただ「何かを紙に書く」ことが頭の中の多くの仮定を修正するって気づいたんだ。ある同僚が「何かを動かす」ことを勧めてくれて、そこから反復するやり方に完全に変わった。最初のバージョンが「バカ」でも、ハックっぽくてもね!

これは大体正しいと思うけど、メンタルモデルを持つことと反復することの必要性も強調したい。プログラマーがモデルを考えずにプログラミングを始めて、ただコードを重ねて問題を解決しようとするのはよくあることだと思う。最初の「動く」実装で満足して、反復しないプログラマーも多い。最近は、プログラムについて考えることが少なすぎる気がする。コードを書く前に、少しでも紙にマッピングすることが大事だと思う。

事前にハード要件を知っておくことは、正しいものを作るために重要だよね。「一時的な」ものが本番環境に乗っかって、ずっと残っているのは怖い。もちろん、緩やかな結合や明確なインターフェースがこれを助けるけど、簡単な例として「シングルプレイヤーバージョンを作るだけ」っていうのは、野菜を食べるよりも悪いことがあるかもしれない。マルチプレイヤーを後から追加するのは難しいから、最初からそのつもりで作る方がいい。

Hacker Newsで議論の続きを見る