パスワードを忘れた? アカウント作成
7066930 story
プログラミング

同僚にコードがひどいと言われたら、どう反応すればいい? 143

ストーリー by headless
泥沼 部門より
同僚の書く酷いコード、どうやって気づかせる?」というストーリーを先週掲載したが、ひどいと言われた側からのタレこみが本家で取り上げられている。

本家/.「Ask Slashdot: How To React To Coworker Who Says My Code Is Bad?」より

私は今の会社で10年以上働いており、いくつもの製品開発サイクルにかかわってきた。しかし、最近チームに加わった見習いの開発者が、私のコードの出来がひどいと言い出した。わが社のコードベースにはおよそ5万行のコードがある。私のコードに対する苦情は、彼の経験が浅く、コードが何をしているのかを理解していないのが原因だ。彼は頭がよく非常に有望であり、良い質問をしていると思う。しかし、どうすれば彼自身が誰よりも優れているという考えを捨て、時間をかけて内容を学ぶように説得できるだろうか。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • そうかもしれないなぁ (スコア:5, おもしろおかしい)

    by Landie(GRG) (6950) on 2013年01月12日 18時41分 (#2304819) ホームページ
    じゃあ、少し時間をあげるから、君がきれいに書き直してくれないか?
  • まずは褒めるべき (スコア:5, すばらしい洞察)

    by kurema (42872) on 2013年01月12日 19時18分 (#2304838) 日記
    初めに、臆せず自分の思った事を発言したその見習いに対し、その事を称賛し、今後もそうするように言うべきです。
    たいていの企業では情報流通が過少になりがちです。つまり言うべき事を色々な理由で言わなかったり、それを伝えなかったりします。そういった事態は、その逆の事態より問題です。余計な事を言われたりした場合はそれを無視すればいいだけです。
    私の方が経験があるので余計な事を言うなと言ったり、攻撃的になるのは望ましくない対応です。
    忙しくそれを聞くに値しないなら、こう言った上でそう伝えるべきでしょう。

    次に、どのような点で問題であるか、出来れば例を挙げて聞く事です。
    もちろん、客観的になる必要があります。まずは自分の問題を直す事を第一に考えます。相手の問題を指摘するのはその後で構いません。
    その指摘が妥当でないならどういう点に於いてかを言います。例えば、「君はこのように習ったかもしれないが、こういう書き方もあるのだ」とか。
    それで納得しなければ仕方ありません。これは飽くまで自分のコーディングにおける問題の対処にあるのであって、不満解消の為ではありません。自分の方法が正しいなら、見習いはその内気づくでしょうし、それが意見対立の一種であるなら上司にあたる方の意見が優先されるべきです。
    • by Anonymous Coward on 2013年01月13日 9時28分 (#2305023)

      単に「自分が理解できない」ってだけなんじゃないのか?
      自分が想定していないアルゴリズムを理解するのは困難。
      見習いの引き出しが少ないってだけの気がする。

      これを無条件に褒めることには慎重であるべきだと思うな。
      他人を貶しているって自覚も無いみたいだし。

      この件に当てはまるかは分からんが、
      自分より器の大きい人の考えは理解出来ないから
      器の小さな人ほど他人が劣っていると考えちゃうもんなんだよね。

      親コメント
  • 聖帝コーディング (スコア:4, おもしろおかしい)

    by Anonymous Coward on 2013年01月12日 20時03分 (#2304861)

    退かぬ! (文法やデザインパターン的に奇妙なコードを書き始めしまってもひるまない)
    媚びぬ! (後で読む人の事を考えない、コメントも無い)
    顧みぬ! (書き殴ったら読み返さない)

    とか言ってみれ

  • 言い返す (スコア:3, おもしろおかしい)

    by eukare (2230) on 2013年01月12日 19時01分 (#2304824) ホームページ 日記

    酷いって言う方が酷いんだぞー、と。
    #子供の喧嘩か

    --
    ぽぇんぷしゅう。
  • by Anonymous Coward on 2013年01月12日 19時57分 (#2304858)

    他の同僚も思っているかもしれません。
    客もそのように思っているかもしれません。

    むかついた時ほど、成長のチャンスです。
    丁寧に説明してみたら。

    指摘する彼からのなにかがあるかも。
    また、あたりまえと持っているけど長年やっているから気づかないことも。

    • by Anonymous Coward on 2013年01月12日 20時41分 (#2304880)

      まったくその通り。
      自分の根拠を示して、相手の書き方とその根拠を聞けばいい。
      新たな発見を得られるかもしれないし、最低限、相手に自分の考え方を理解してもらえる。

      親コメント
  • 読みやすさは個人の経験に寄るところなので、聞くしか無いですね。
    (アーキテクチャ上の理由だったり、保守性の理由だったり、開発容易性の理由だったりなので、なんで?って聞き返します)

    あと、設計書から実装を想像できないようなコーディングをしてしまう(必要になる)と、
    これは甘んじて受け止めるしか無い。コードよりも設計書がひどいって話ですから。

    #実際に直すか直さないかは、予算の関係もあるので、修正は保留。
    #開発の規約によってできないこともありますし。

  • by phenix (31258) on 2013年01月14日 23時13分 (#2305840)

    そのうち、「こんなひどいコードを書いたのは誰だ!」「去年の俺だ!」ってなれば、いやでもわかる。

  • by glty (45864) on 2013年01月12日 21時25分 (#2304896) ホームページ 日記

    以前のストーリーで「言われてる側だろうなぁ」と書いた者です。

    僕の場合は、とにかく「考えて」欲しかったんです。
    単純に「嫌い」だ「分かりにくい」だと言われても、こちらも納得出来なくて。

    だから、「考えてよ!分からなきゃ根本的な事から教えるからさ!」って言っても、
    皆拒絶反応だったんですよ(プライド高いヤツ程)。

    実際まともに動いてるんだから、調べてよ。
    得手不得手あるのは分かるけど、
    一通りパッと見ただけで「これじゃ分からん」って言われても・・・。

    そんな感じでしたねぇ。

    #あー、また反論くらいそうだ・・・

  • 普通に対応すればいい (スコア:1, フレームのもと)

    by miishika (12648) on 2013年01月12日 18時17分 (#2304807) 日記
    大勢の前で「私のコードのどこがひどいのか言ってみろ。言えないならそんな言いがかりをつけるなボケ」
    と逆に恥をかかせてやればいい。
  • by Anonymous Coward on 2013年01月12日 18時39分 (#2304818)

    >私のコードに対する苦情は、彼の経験が浅く、コードが何をしているのかを理解していないのが原因だ。

    果たしてそうだろうか?

    学生の頃にプログラミングを勉強しだした時、他人が書いたたくさんのプログラムソースを読むことをした。
    素敵なコードはわかりやすく、勉強しはじめのビギナーでも読むことができた。
    しかし、汚いコードは、何をしているのかわかりにくい。

    他人が読んだときに分かりにくいコードは、長い期間が過ぎると、書いた本人も読みにくくなってしまう。
    他人が読みやすいコード、それは自分がわかりやすいコードでもある。

    経験が豊富な人でも、読むのに苦労するソースは汚いソース。
    汚いソースを指摘するのは、経験の浅い深いでは関係ないんだよね。

    • Re:素敵なコード (スコア:5, すばらしい洞察)

      by Anonymous Coward on 2013年01月12日 19時02分 (#2304826)

      でも「三項演算子は使い慣れてない」とか「do...whileは他で実現できるから不要」とか言われてもな。

      (その人にとって)読みにくいソース=(一般的に見て)汚いソース ではないから
      実際のコードを見て見ないことにはどっちの意見も話半分にせざるをえないです。

      親コメント
    • >私のコードに対する苦情は、彼の経験が浅く、コードが何をしているのかを理解していないのが原因だ。

      では、なぜ彼の経験が浅いと、貴方のコードは理解出来ないのでしょうか?

      一般論としては「技術レベル(含業界経験則)の未熟」と
      「貴方個人の慣習(独自性)への不理解」があると思われます。

      前者は彼の努力を期待してしかるべきですが、
      後者は貴方のコミュニケーション能力の問題です。

      後者に対する要求を完全に拒否したいならば、
      貴方は他者とコードを元にコミュニケーションを必要とされる仕事を
      選ぶべきではありません。

      親コメント
      • 経験が浅いが優秀と評価される者が酷いと言うようなコードって、おそらく本当に酷いコードだと思うんですよ。
        そして相談者はコードが酷いということは否定してませんので、この事はコレクトだと思います。

        なので、噛み砕くと相談者は「経験浅く優秀な者が酷いコードに嫌気がさし理解する作業を拒否するが、どうやったら従わせることができるだろうか?」という事でしょうね。

        #そう考えると嫌な相談だ・・・

        親コメント
      • 問題の新人さんはまずは、自力でコードを書き直して見本を見せ、さらに自分に課せられた用件
        を期間内にこなすことができるのか?自力でできないならチームメイトの手を止めて対策をとらせ
        るべきなのか、その場合でも十分期間内にプロジェクトは完了するのか?それとも何も成果物を
        ださないのかを示すべきでしょう。

        で、今回の質問者は、彼無しでプロジェクトを完了できるか判断し、彼無しでできるのなら、それで
        無視すれば済む話です。彼以外の代替が必要なら、それを調達する目処があるかどうかが問題
        でしょう。

        必要なのはティーチングなんかの前に仕事の要件定義です。

        親コメント
    • by wolf03 (39616) on 2013年01月12日 22時18分 (#2304913) 日記
      早く仕上げる方だったから、必然的に遅いのを支援する事に・・・・・。
      他人のコード読む練習にもなっていたと気付くのは、就職してからだったけど。
      親コメント
  • まず、可読性が問題なら、命名規約を含むコーディング規約が守られていることが
    プロジェクトにおけるよいコードの唯一の判断基準であるべきで、規約によっても
    「汚い」コードがあると感じられるなら、規約に不備があるということか、プロジェクト
    についての認識が間違っているかどちらか、ということになります。
    コードについてあれこれ言う前にプロジェクト管理者に話をつければすむことではないのかな。

    保守性やテスト管理保守性、処理効率の問題を感じるなら、客観的データが出せるはずだから、
    静的チェックでも動的チェックでもテストでも何でも書いて 示せばいいだけだと思います。

    前回の話もそうだったんだけど、どうして人間関係の話になるのか いまいちよくわかりません。

    • >前回の話もそうだったんだけど、どうして人間関係の話になるのか いまいちよくわかりません。

      私もそうですがプログラマと言う人種は自分こそが世界最高のプログラマだとうぬぼれている人が多いからではないでしょうか?
      他人に指摘される→他人より自分が劣っていると言われているように感じる。
      だから他人の意見に歩み寄れない人が多いのかと。
      まあ、コミュニケーション能力に劣っているのだと言われればそれまでですが^^

      親コメント
  • どちらが「わかってない」かはっきりするから。

  • by Anonymous Coward on 2013年01月13日 8時53分 (#2305015)

    それは都市伝説orz

  • by Anonymous Coward on 2013年01月13日 11時28分 (#2305056)

    異なる文化(コーティング規約)の人達と合同で開発を始めるとよく言われます。特に多いのが、三項演算子、do-while、例外処理の組み方(goto or エラー関数)辺りでした。最終的には、話し合ってお互いに良い所をマージして新しいコーティング規約を作りました。

    でも、初めに文化の違いだと言ったら、切れられました。

typodupeerror

「毎々お世話になっております。仕様書を頂きたく。」「拝承」 -- ある会社の日常

読み込み中...