/note/tech

競プロ出身者・機械学習出身者の問題コード

https://anond.hatelabo.jp/20240625191650

競プロ出身者だけじゃなく、機械学習出身者も問題コードが多い

印象の問題ではなく実際に下記のようなコードが多い

念のため言っておくと底辺大や文系出身プログラマーも同様の傾向にある

■ 正常系しか意識していない

一番多いのはコレで異常系の動作を全く意識していない

入力値に想定外のものが入ることを考えていなかったりI/Oに関わるエラーについても配慮がない

「エラーが出たらとにかくtry-catchしてログ吐いて終わり」

ならまだマシな方で、「握りつぶして処理続行」みたいなことも平気でやる

「ここの処理でエラーログが出てるから対処よろしく」

「対処しました!(握りつぶし)」

とか滅茶苦茶多い

■ セキュリティに関する意識が低い

異常系の話と被るけど基本的に性善説でコード書くのでセキュリティの不備がめちゃくちゃ多い

API作らせてもリクエストの内容を信用して実装するしサニタイズチェックもしない

サーバー作らせてもrootか共通ユーザーだけで運用するしファイル管理も滅茶苦茶

とにかく「目の前に与えられた課題を解く」だけのコードなので他のことに関する配慮が全く無い

■ 型定義しないし配慮しない

TypeScript使わせてもanyだらけだし、JavaとかだとObjectだらけ

うちはPythonでは型は使わないけど命名規則で担保してるのにそれもガン無視で実装する

結果としてできあがるのは

「一応、正常系では動いているけれど他の入力が来たときにどうなるか分からないし誰も修正できない」

っていうコード

最近はそういうコードはChatGPTにぶち込んで型付けて貰ったりするけど

8割ぐらいの確率でChatGPTも型付けできない状態になっててお手上げになる

■ コピペコードが異常に多い

ネット検索したコードのコピペ、ではなくて

自分で書いたコードのコピペがめっちゃ多い

全く同じ処理なのにメソッド化しないでコピペしてたり

一部の変数を切り出すだけでメソッド化できるのにコピペしてる

そりゃ動くし性能も変わらないけど後でバグがあったり変更するときにすげー困る

これもChatGPTにぶち込んで「共通的な処理をメソッド化して」って言うとやってくれるのでめっちゃ便利

■ 結果が出るだけでクソ遅い(機械学習出身者)

同じファイルをオンメモリに3回ぐらいロードしたり

ほぼ同じDBへの問い合わせが10回ぐらい走ってたり

クソ重いwhileループになってるメソッドをフレンドリーに何回も呼び出したり

とにかく「最終的に出来上がるものが良好であれば時間がかかっても構わない」的なコードが非常に多い

競プロ系はこういう人はあんまりいないんだが機械学習出身者はマジでこれ

彼らはデータを解析したり優秀なモデルを作るために頑張ってきたので継続的に処理負荷を減らす、みたいなことに意識が回ってくれない

「これはPoCですから」

とか言うんだけど誰でも分かるようなクソ遅いコード書いておいて

「ここの処理は時間かかります」

とかしれっと言ってくる