先日、「量子コンピュータでハッカソンをして表彰された」とかがニュースになっていた。
その高校生はよく勉強したな、俺が高校生のころとは大違いだ、と感心する。
俺の高校生時代ときたら、趣味と女の子を追っかけることしか頭になかった。
当然、教師との折り合いは最悪だった。
それでもハッカソンを私はまったく評価しない。
だいたい技術ありき(量子コンピュータ)とかで、なにかプログラミングしましょうというと、チープなアイデアしか出てこない。
トイレにセンサーつけたとか、アホか?と思うけど、技術先行なら仕方ないよね。
やっつけ仕事で機能を達成するプログラムを「書きなぐる」
長年、プロとしてプログラムも書いた私からすると「ろくでもない癖がつく」
なぜならば、プロが書くプログラムってほとんどがエラーハンドリングなんです。
入力におかしなデータが入ってきたらどうするか?弾くのか、おかしなところはデフォルトで埋めるのか?
稼働中におかしなことが起きたらどうするのか?例えばmalloc(新しくメモリを要求)したけど、もうメモリがない時に終わっていいのか、処理中のデータはどこかに書き出したほうがいいのか?
通信エラーが起きてJSONファイルが途切れた。今までやった処理はそのままでいいのか、ロールバックするのか?
中心となるアルゴリズムが動くというのはユニットテストの段階くらいでパスする話で、他は多くの関門がある。
なにがベストのアルゴリズムかは、他のいろいろな要件を聞いてみなきゃわからないし、コードを書くことが早くても、システム構築全体からしたら微々たるものだ。
コードを書く速度だけなら、20歳代の俺はメインフレームのアセンブラーで一日で2000行を超えるコードを書いて、アセンブリーエラーがゼロだったことがある。
つまり若いころに慣れていれば、いくらでも早くコードは書ける。
(だから、どうした?と今の俺はマジで思う。それは仕事が早くてよかったね、くらいのことだ)
年取って体力がなくなったプログラマーの私はきっとハッカソンに参加したら最下位だろう。
でも上位入賞者の作品をみて「それ、売り物になるプログラムじゃないよね」と乾いた笑いを浮かべると思う。
現実に使えないプログラムを私は書かない。だって恥ずかしいもん。(もちろん、習作は書くけど公表はしない)