パスワードを忘れた? アカウント作成
16609340 story
Python

ベンチャー企業に入社した機械学習エンジニアが半年で鬱になった話 108

ストーリー by nagazou
鬱になる前に転職 部門より
あるAnonymous Coward 曰く、

5月20日に公開された「自社開発メガベンチャーをわずか半年で鬱退職した雑魚エンジニアの話」という記事が、Twitterなどのプログラマ界隈で盛り上がっているので共有したい(はてなブックマーク)。

記事を要約すると、氏はメガベンチャーと呼ばれる自社開発企業の機械学習エンジニアに転職、そこは待遇もよくプロジェクトも選べるなど自由主義な社風であったが、一方で放任主義であったという。入ったプロジェクトは前職(データサイエンティスト)の経験に近そうなPythonのプロジェクトであったが、ソースコードの品質が低く理解できず、またこのままでは問題があると思い、リファクタリングを提案するもチームメンバーには受け入れらず、結果として人事評価も低くなり、最終的にマネージャーからの「あ、そういうコードを保守した経験ないんですね」というコメントに耐えられなくなり、鬱になってしまったという。

これに対して、SNS上では「この人は悪くない。環境がダメだっただけ」「相性が合わなかったのでは」「コードの品質より短期的な売り上げを優先する職場だったのでは」「既存メンバーはリファクタリングする動機が無いのでこういうのは良いリファクタリングタイミングだ」といった擁護の声がある一方、「チームに入って初手リファクタリング提案は絶対ダメ」「入ったばかりの人は信頼ポイントを貯めてから提案すべき」「本番運用中のコードを変えようとしたら挙動が変わらないことだけを願いますと言われるのは当たり前」「品質が低いコードを保守するという仕事は普通にあるので元の品質が低くて直せないというのは普通にスキル不足」といった厳しい声、また「そもそもPythonで書いたコードに保守性なんてない」というどうしようもないツッコミも上がっている。スラド諸氏はどう考えるだろうか?

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • うーーん.. (スコア:2, 興味深い)

    by Anonymous Coward on 2023年05月24日 20時15分 (#4465867)

    すでに言われていることも混ざってますが、記事を読んで思ったことをつらつらと、

    1)仕事をする上での目標設定は与えない/チェックしない会社だったのか?
     書かれていないから分からない。
     もし課題を各自で設定しろというシステムで、自分でリファクタリングという目標を設定した、というならマネージャが止めないといけない。
     そんな仕事を入社直後でそのソフトが作られた経緯も分からない、使われる状況の業務知識もない新人にさせちゃいけない。危険すぎる。

    2)リファクタリングとテスト(自動化された)はセット
     わかりにくい複雑なコードは負の遺産、それは間違いない。
     ただしコードを変えるときは常にテストが付きまとうし、その工数はバカにならない。手動でやるならコード変更よりもテストのほうが工数が多いのはザラ。
     記事見る限り自動化されたテストはなかったようだし、まず手をつけるべきはそこだったのかな。(でも後から自動化テスト作るってイバラの道だよね..)

    3)リファクタリングってゼニになるん?
     ゼニにはなる、ゼニにはなるんだが、ゼニにできる&できないケースがあると思うし、コードのどこに保守性・運用性を持たせるかの考慮はけっこう大事。
     具体的にはバージョンアップでよく変更する箇所(パラメータや画面の追加)とか、大きな移植を控えているとか(キレイなコードだったらコピペでいけるよね)。
     でもこんなことは保守・運用を理解しないとね、入ってすぐの新人にはわからないと思う。かく言う自分も誰も中身を見ないモータードライバのコードをキレイにした前科ががが。

    4)あなたの給料はどこから?
     何回か転職を経験してきたけど、新しい会社で一番最初に気にするのは自分を評価するのは誰なのか?というところ。(割とこのへん曖昧な会社も...)
     その誰かの工数を減らすことができれば、その人は他のもっと大事なことに時間を使えるようになるし、それはその人の先にいるユーザの満足につながる。
     そういう意味で初手にリファクタリングを選んだのはスジが悪かったかな..。でも指摘する人はいなかったんだろうか。

    5)あ、そういうコードを保守した経験ないんですね
     入社半年の新人に何を口走っているんだ?

    どうにも放任が過ぎるというか、他の新人はどうやってこの会社に馴染んでいるんだ?という疑問を感じた。

    • Re:うーーん.. (スコア:4, すばらしい洞察)

      by Anonymous Coward on 2023年05月24日 20時39分 (#4465882)

      最後については中途なんだからおかしかないでしょ
      それになかったんだね、てのはないなら仕方ないってフォローでもあるでしょ
      フォローされるとプライドが傷つくとかなのか
      実際やったことないことをやったことないんですねと言われてそこまで病まれるとなぁ
      それも別の仕事に変わるかって言ってくれてんのに
      ナイーブやなぁ

      どうすりゃ良かったんよ人事の人は
      そうですあなたが正しいですと言って入社半年のこの人の言う通りにするしかないわけ?
      傷つきやすい人が大変なのはわかるけど、何かわかるように傷つきポイント示してくれんと地雷踏んじまうわ

      しかしまじでわからん。
      あーあの先輩と合わなかったですかね、ならいいんか?

      親コメント
      • by Anonymous Coward on 2023年05月25日 19時49分 (#4466386)

        元コメです。この方中途だったんですね..、記事文面見て、てっきり新卒とばかり思っていました。
        ちょろっと書いていますが自分は誰も中身なんて気にしないモジュールのリファクタリングでけっこうそれなりに時間を浪費した経験があります。
        まあ当然ながらあんまり良い評価は受けなかったのですが、自分自身すこしそのときモヤモヤしたものを感じ、それもあってのコメントでした。

        普通そうだと思うのですが、上長に黙って独自にプロジェクトを始めるなんてないです。「これをやります」と言ってOKをもらって開始します。
        自分の感じたモヤモヤは「それじゃなんで開始時にOK出したんだ?」というものです。(今はまあ..あれのリファクタリングならそんなもんだろ、ですが)
        一体この人はなにをマネージメントしてるんだろう、そういう感情だったと思います。

        最後のヤツは中途&言われてみれば、たしかにどうよ?ですが、コレ言ったマネージャさんって人事の人だったんでしょか?
        人事の方なら納得します。技術的なことが分からないなりに精一杯良い提案をしてくれていると感じます。
        が、採用面接ならともかく入社したあとの業務面談であれば、評価をするマネージャ格はエンジニア上がりだった可能性もあります。
        私はエンジニア上がりのマネージャさんという理解でこの記事を解釈していました。

        「じゃあどうすればよかったんだ?」という質問への私の回答は、「リファクタリングという目標設定の時点でマネージャが止めるべきだった」です。
        単にこの方が突っ走っただけとか、自信満々で人の話を聞かなかったという可能性もあります。
        マネージャが業務をよく把握してなかったとか、この方が実力不足だった面もあったのかもしれません。
        自分が記事を読んで一番気になって、そしてコメントしたかったのは、集めた人員を管理して成果物を上げるべき立場のマネージャなら、もうちょっと何か出来たorすべきだったんじゃないか?ということでした。
        以上、下っ端の愚痴でした;D

        親コメント
        • by Anonymous Coward on 2023年05月25日 21時54分 (#4466421)

          上席のエンジニアあるいはエンジニア上がりの人、だったと思いますよ

          ものすごく自由度の高い会社だったようだし、
          PROJECTにはアサインされるけどその中で細かいGO確認なんかなかったんじゃないですか
          #うちもそうだし。
          面倒見の良くないプロジェクトに入ると仕事探してやってねって感じになる
          この人の場合見つけて確認も取らずにやった仕事が評価低かった
          評価者がフォローしようとして心折っちゃった
          のかなと
          ありていにいうなら「単にこの方が突っ走っただけとか、自信満々で人の話を聞かなかった」って話じゃないですか
          入社直後なんだからそんなこともあろうかと面倒見てやれよと思わんでもないですが、
          それって細かく管理するのと何が違うんよという気持ち
          自由度の高さと裏腹なんではないかな
          この会社は合わなかった に尽きるのかなと

          親コメント
    • by Anonymous Coward

      この人も書いてるけどコミュニケーション不足。
      常に納期に追われる下請けなんか数十年単位でDOS自体から使いまわされて理解不能な利用ルールが色々ある汚いコードで回ってるけど、まわりに聞くからなんとかなる。

      #綺麗なソースコードできっちり書くのが理想だけど、現実的には動けばいいで回さざる得ない

  • お悔やみ申し上げる (スコア:2, すばらしい洞察)

    by Anonymous Coward on 2023年05月24日 22時05分 (#4465930)

    エンジニアにとってソースコードは水みたいなもので、ヘドロの中でも元気なアメリカザリガニみたいな人もいるし、オオサンショウウオみたいな人もいるんだよな。
    まあでも世の中の大半はヘドロみたいなソースコードだと思うから、アメリカザリガニになるしかないんだよな。

  • by Anonymous Coward on 2023年05月24日 19時38分 (#4465832)

    百聞は一見にしかず。

  • by Anonymous Coward on 2023年05月24日 19時47分 (#4465841)

    理解できないソースコードの品質がわかるものなのだろうか?

    ある一定レベルに達しているコードなら能力が不足しているから理解できなかった可能性もありそう。
    どんなコードなのか見てみたい。

    • by Anonymous Coward on 2023年05月25日 16時40分 (#4466290)

      理解できないソースコードの品質がわかるものなのだろうか?

      こういう問いが出てくる時点で、ソフトウェア品質の内部品質の理解が元ネタの雑魚エンジニア氏に遠く及ばないのは確定だね。
      日本では珍しい事では無いが。

      親コメント
    • by Anonymous Coward

      品質が低いから理解できないというのも同感できない

      • by Anonymous Coward on 2023年05月24日 19時58分 (#4465851)

        俺に理解できないから品質の低いコードだと言ってるからなこのブログ
        もちろん理解にしにくいコードだったんだろうが、
        それを「品質が低い」「こうしたほうがいい」とかいきなり先輩に言ってたらそりゃ顰蹙買うよねっていう
        それでも先輩も「動き変わらないならやっていいよ」と言ってくれてんだけどな

        親コメント
    • by Anonymous Coward

      品質が悪くて挙動を把握しきれない、
      という意味で言っているならそれはままあることですね。
      まあ当人が「雑魚」と免責して語ってる以上
      言語を操る能力は高くないのでしょう。

    • 「我がコードは我流。我流は無形。故に誰にも読めぬ。」は誰の言葉だったっけ。
      #元ネタは雲のジュウザだが

      ソースコードの品質は見ればわかるからな。

      それこそ「作った本人にすら説明できない/挙動が把握できない」
      なんてのは典型的な糞コードの一つ。理解出来ないコードは改良も
      デバッグもできないし、最低なコードだよ。

    • by Anonymous Coward

      そこかなぁ。

      よくわかんないからリファクタリングしましょうとか初手で言われると、ヤバイ予感抱いてしまう。
      「機械学習や数理最適化のアルゴリズムに詳しいわけでもない」ならなおのこと。
       
      コードの綺麗さってのはマンガで言えば絵の綺麗さで、それは成功の必要条件でもないしもちろん十分条件でもないからなぁ。
      いやもちろんきれいに越したことないけど。
      ベンチャーなんで保守性とかなおさら優先度低いし。

  • by Anonymous Coward on 2023年05月24日 20時00分 (#4465854)

    外国人のすごいプログラマーがいたのだが暇な時間にIOCCCのコードを楽しそうに読んでいたよ。
    理解できないという時点で他人のプログラムを理解する能力が不足しているように思う。

    # そういえば昔に書いた自分のコードが理解できないこともげふんげふん

  • by Anonymous Coward on 2023年05月24日 20時47分 (#4465889)

    本物のプログラマならFORTRANで書くだろ。
    それで出来ないならアセンブラを使うものだ。

    # はっ、WebAssemblyってそのために(違います

    • by Anonymous Coward

      その話が掲載されていたbitを読んで大笑いしていました。

  • ベンチャー(管理職不在放任主義の零細企業という意味)
    メガベンチャー(管理職不在放任主義の大企業という意味)

  • by Anonymous Coward on 2023年05月25日 9時02分 (#4466084)

    Zennじゃなくてnoteにでも書いてて欲しい。
    Qiitaみたいにゴミ記事ばかりにされたらかなわん。

  • スラド民理論 (スコア:0, すばらしい洞察)

    by Anonymous Coward on 2023年05月24日 18時22分 (#4465777)

    ペンチャーに入ったやつが悪い(キリッ
    だろうが

    • ぺ? (スコア:2, おもしろおかしい)

      by Anonymous Coward on 2023年05月24日 19時28分 (#4465822)

      いやもちろん、わざわざペンチャー [google.com]に入った奴が悪いのは確かだけど
      それを安全確認せずに操作するやつも悪いだろう?

      で、何の話だっけ?

      親コメント
    • by Anonymous Coward

      メガベンチャーというからには社内に高プロ(年収1075万円以上)が沢山いそうなイメージがあるが、ブラック確定なんでは。
      収入多くても潰れたらお終い。

    • by Anonymous Coward

      スラド民も Twitter 民も、コードを見ずに評価できんだろ

    • by Anonymous Coward

      どこの異世界のスラドの話だ?

      そんな話は聞いたことがないぞ。

  • by Anonymous Coward on 2023年05月24日 18時24分 (#4465780)

    ソースコードの品質が低く理解できず、またこのままでは問題があると思い

    これが諸氏もよく話題にする「よくわからないけど動いてるコード」ってやつか。

    「本番運用中のコードを変えようとしたら挙動が変わらないことだけを願いますと言われるのは当たり前」

    個人的にはこれが一番理由としてでかい。
    「動いてるものをわざわざいじって動かなくなったらどうすんの?いじる必要ある?」みたいな。
    そこに時間割くなら別のことしましょうという。

    • by Anonymous Coward on 2023年05月24日 19時47分 (#4465842)

      ぶっちゃけ、主体性の無いザコエンジニアさんなんだと思う。
      環境なんて渡されたのをそのまま使うよりまず自分の使いやすい環境をベースに作業を始めてだんだんとそこの環境に近づけていけば良いのだし、ソースコードが読めないのが品質が悪いとか、何を甘えたことを言ってるのかと。いじる必要があるんだだから当然読む必要があるわけで、読めよ。

      親コメント
    • > これが諸氏もよく話題にする「よくわからないけど動いてるコード」ってやつか。
      よくわからないけど、工場出荷検査では動いているコードを本番運用にぶっこむと、他のクエリの結果が印刷され・・・
      親コメント
    • by Anonymous Coward

      まあ、変更の容易さを担保せずに本番を絶対的正義として技術的な負債が積まれるままになると、変更しづらさでにっちもさっちもいかなくなることが多いけどね。
      完全に塩漬けでいいならいいけど、運用されてるシステムってのは多少なりとも変更が発生するので。

      • by Anonymous Coward

        変更に時間がかかって無事脱落のパターン

    • by Anonymous Coward

      うーん、機械学習ベンチャーでもこんなレベルなのか。
      挙動が変わらないのを運任せでお祈りするようなコードだから品質が低いと言われるんだが。

      まあ、雑魚エンジニア氏もプロジェクト入る前にちょっとコード見せてもらうとか、
      まずUnitTesTとCIを導入しましょうとか穏便なところから入って、静的解析やリファクタリングの話を持ち出せばよかったのにね。

      気を取り直して次いこ、次。

      • by Anonymous Coward on 2023年05月24日 19時33分 (#4465827)

        記事を読むと、件の先輩エンジニアは天才肌の人で、第三者の視点で考える能力が欠如しているケースに感じますね。
        同じ部内でそのコードが「正直私はあまり触りたくはないですね…」とか「(私が追加した)コメントがなかったら、何をやっているか本当にわからない」とか言われてることからも、この先輩個人か、その周囲の小さめのグループに関する話でしょうね。

        親コメント
        • by Anonymous Coward

          まあ、院まで行って論文たくさん書かなきゃいけなくなるとコードのメンテより論文のネタ、になるからね。
          そのままの感覚で仕事してればそうもなるよね。つまるところ、他人は自分じゃないから、経験もそれに伴う考え方も違う。

          経験を前向きに活かしてほしいものです。

    • by Anonymous Coward

      理解できないのに、どうしてリファクタリングできるのか。
      単体テスト環境作ろうって提案するのが先な気がする。

    • by Anonymous Coward

      このままでは機械学習エンジニアがコードを理解できず機械学習の仕事を進められないので、「私」はいじる必要を感じたけど、その必要性について周りとうまく合意できなかったって感じかな。そもそも誰がリファクタリングするの?っていうリソースの問題もあるだろうし。ありもので何とかしろってのは仕事ではよくあること。

    • Re: (スコア:0, オフトピック)

      by Anonymous Coward

      違う違う。

      いわゆる「よくわからないけど動いてるコード」ってのはプログラマ本人が理解できてないけど動いてるときに使う。
      スリープ(待機命令=待ち時間)入れたとこで挙動は変わらないはずなのになぜかスリープ入れると安定して動くとかそういうタイプ。

      今回のはほかのプログラマが書いたコードが読めないってだけだから違う。

      • by Anonymous Coward

        君の方が違うよ。
        ソース読んできなよ。

    • by Anonymous Coward

      記事読んだけど何かまぁそんな立ち回りじゃそうなるよなっていう感じ

      リスクベネフィットもろくに提案せず「キレイがいいからキレイにしましょう」じゃなぁ
      キレイが良いと強く思ってりゃ最初からそんなコードにゃならんのよ

      しかも強く断られたわけでもなく難色を示された程度で…
      損で大したことできなかったらかと評価が低かったと。そらしゃーないでしょ。

      挫折したことなかったのか
      たまたま体調悪かったんかもしれんな

  • by Anonymous Coward on 2023年05月24日 20時33分 (#4465878)

    が自分には無かったんだが、読み切る人はやっぱり何らかの知見を得ようとしての事なんかな。

    各章の見出しだけ見て、前回敗北者が次への挑戦と心の整理の為にしたためた文章、といい加減に解釈した。
    珍しいものではなく自分が読む必要はなかろうと興味を失ってしまったが、興味を持って読む人はどのような琴線に触れてのことなのだろうな。

    • by Anonymous Coward

      そらお前さん、不幸な人間はいずれもそれぞれに不幸なものであると知るためよ。
      そして明日の夜明けに新しい気持ちでビズリーチに駆け込むためよ。

    • by Anonymous Coward

      他山の石、というやつだよ。

    • by Anonymous Coward

      他人の不幸は蜜の味~

typodupeerror

長期的な見通しやビジョンはあえて持たないようにしてる -- Linus Torvalds

読み込み中...