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

プログラマに対するひどい指示・ルールについて語ろう 144

ストーリー by reo
全部 main 部門より

ある Anonymous Coward 曰く、

とあるプログラマが「派遣時代に行った酷い現場の思い出」を togetter でまとめた「派遣 PG 時代の思い出」が話題になっている。曰く、

  • 「メソッドを作ると処理が上下に飛んで可読性が落ちるので、出来る限り一つにまとめてください」と言われた。
  • 前任者が「コードを共通化してください」という言葉を勘違いし、一つの画面クラスに全ての画面の機能を持たせ、メソッドの引数でどの画面として動くかを切り替えるという凄まじい実装だった。
  • 帳票 1 枚ごとに 3000 行クラスが書かれていた。

など、恐ろしい話がたくさん並んでいる。/.J でもひどいコードについての話題は数多くあったような気がするが、みなさんが体験したもっとも「これはひどい」という話はなんだろうか ?

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by iwakuralain (33086) on 2010年08月17日 10時56分 (#1810580)

    指示というか勘違いしてる人はいままでたくさんおりまして、
    「ここんとこちょちょっと変えといてもらえる?5分くらいで出来るよね?」
    という人(もしくは似たような考えの人)はたくさんいました。
    たしかに変えるだけならちょちょいで出来ちゃうんですけど、一番大変なのは変更後のテストとかなんですよ。
    変更はすぐに出来るけど単体テストや連結や総合でのテストを入れると数日かかることを伝えると、私ではダメだと思ったのか他の人に同じように頼みに行き、そして同じ事を言われを繰り返してる人はいました。
    次の日に「客に頭下げないといけなくなったじゃないか。どうしてくれるんだ?」とか理不尽なことを言われたのは今ではいい思い出です。

    • by Anonymous Coward on 2010年08月17日 11時32分 (#1810619)

      具体的な指示をもらえてるんだ
      「なんでもできるようにしといて」とか
      「うまくいくようにしといて」とかはないの?
      ※あとから仕様変更するよって意味なんだと思います。

      あと、仕様書にかかれてない仕様で
      「仕様書に書かれてなくてもこんなの一般的な仕様で、入ってないのがおかしいだろ、すぐにいれろ」
      「え?どのような仕様ですか?」
      「まだ、決まっていない」
      とか

      親コメント
  • 手動CVS (スコア:3, おもしろおかしい)

    by ksada (4435) on 2010年08月17日 10時59分 (#1810584)

    >>世にも悪名高い、コードを修正したらコメントアウトして元のコードを残せというルールだった。

    こんな現場でやりました。
    せっせとコメントに直しているうちに、自分がCVSの動作を手でやっていることに気づきました。

  • by Anonymous Coward on 2010年08月17日 11時02分 (#1810588)

    プログラマじゃなくても、あるでしょ?

  • 俺の例 (スコア:3, 参考になる)

    by stricting (30765) on 2010年08月17日 16時48分 (#1810943)
    技術力が高いことで昔は有名だった某ゲーム会社では
    ・最初から最適化されたコードを書け
    ・古いコードはコメントで全部残せ
    ・全部大文字
    ・自分のいじった場所には署名する(俺は'%%%'だった)
    とルールはこれだけでした
    特殊な事情としてZ80-8086コンバータとか使ってたからこんなんなんでしょうが
    簡単なアセンブラのソースなのに600KBあったりとかそんなもんでした
    メソッドとか以前にタイニーモデルのフルアセンブラでしたからね
    読めない奴は技術力が足りんのだ!という感じ

    相手のプログラマの技術力が低い場合を考えなければならない局面はありませんでした
    低い人いないし
    そういう意味では恵まれた職場だったのかもしれません

    テストにしても部長がサラサラとDISKBIOSを書いてカチャンと5インチドライブが動けば
    それがそのまま商品に載りましたし
    半日でPC88からPC80SRに移植したり
    そういう時代だったといえばそれまでなんでしょうが
    個人的には高級言語が出てきてからの考え方のような気がします、テストって

    要はなんだというと技術力が低いから迷うんであってそこは磨けばいいことではないのかと
    残業する前に全部方がついているというのが某社の基本でした
    広告は完成してから出すとかそういう
    コミュ能力を重視するようになってからすっかりそんなこともなくなったようですが
    • by stricting (30765) on 2010年08月17日 19時20分 (#1811064)
      オフトピ気味になってしまったので…

      dsレジスタ禁止というのがありましたかね
      別の会社ですが

      アルファベットを筆記する際に特殊な字形を使わなければいけなかったとか
      あまりひどいというものではないですがいまだに抜けません

      言語が高級になる分だけ低練度者に対する配慮をしなければならないのが俺にとってはひどいです
      親コメント
  • by Account-mochi Coward (34881) on 2010年08月16日 20時46分 (#1810350) 日記
    --
    署名スパムがウザい?アカウント作って非表示に設定すればスッキリさ。
  • by Anonymous Coward on 2010年08月17日 10時57分 (#1810583)
    「プロトタイピングでいくぜ」とか言っておいて、蓋を開けたら「一度書いたコードは許可なく書き換えるな」とかもうね、バカかと。アホかと。その会社のリーダー世代は揃って昔のデスマのトラウマがあるようで、とにかくいじり壊すことだけは避けたかったらしいんだけど、要するにそういうデスマに陥るようなアホ(敢えて断言)が、「よくがんばりました」のご褒美だけでリーダーやってるような人たちでね。許可を得ようにもブロックまるごと消して書き直すことは許されないから、ブロック先頭で新規開発の関数呼んで即リターンを打診したらなんとこっちはOKとか、もうね、バカかと。アホかと。
  • by Anonymous Coward on 2010年08月17日 10時59分 (#1810585)

    最悪ってほどでもないけど、

    某ガラケー関係の仕事をしていた時のこと。
    「PDAの某社を買収した。これからはグローバルでは外国人の方が多いからコメントは英語で書くべき。」
    というのは理解できなくもない。

    でも実際にはその会社のプログラマで英語ができる人は圧倒的に少数派。
    しかも常にオーバーワーク気味で、日本語コメントを書く余力さえもほとんどない。
    その結果、コメントが激減して、作った本人にも理解不可能なコードが大量生産
    されるのは、火を見るより明らかだった。

    プログラマが英語を勉強するのも社内公用語を英語にするのも賛成だけど、
    経営者なんだから自社のリソースや現場スキルを見てから経営判断を下すべき。
    あんなこといいな♪ できたらいいな♪ [srad.jp]」で夢物語を騙るのは経営者の仕事じゃない。
    できることとできないことの区別もできない経営者は死んでくれと何度願ったことか。

  • 明らかにまずいことを、やっていると思ったら、
    変なところで、つぶやいて自己満足にひたってないで、
    現実を直す努力をすれば、良いんじゃないの?
    と、言いたいけど、そうすると、直ぐに首かな?
    私は、こういうのが嫌で自分で起業してやっているし、お客さんには、
    運用がまずいところは、しっかり指摘してやっています。
    恵まれ過ぎですかね。
    しかし、私は たとえ3000行のクラスで醜くても、正しく動作すれば、官軍だ。
    と思っていますので。
    ただし、好ましいとは、言いません。
    • 明らかにまずいことを、やっていると思ったら、
      変なところで、つぶやいて自己満足にひたってないで、
      現実を直す努力をすれば、良いんじゃないの?
      と、言いたいけど、そうすると、直ぐに首かな?

      そうですね。
      元の人も書いていますが、多くの場合派遣元に電話されて首にされます。

      #関数名を規則に沿った連番って COBOL の頃の名残なのか~とちょっと思いました。

      親コメント
    • by Anonymous Coward on 2010年08月17日 11時26分 (#1810613)
      実際、実力のあなたのような人は現状を変える努力をし、変わらなければ自分で飛び出すけれど、
      実力のない人は、変えられず、飛び出せもせず、愚痴る。
      経営側としては、奴隷に鎖の立派さを互いに自慢させられれば成功。

      ここでの問題は、そのだめな現状や指示がいかに面白いか。
      不勉強による頭悪い指示自慢は、お笑い芸人が変な顔をするのと同じように陳腐化している今、
      どんな面白さが飛び出してくるか。
      親コメント
    • タイトルの
      > 酷いのは、この派遣プログラマーかもね
      これこそフレームの元では。
      どこがどう酷いんでしょうか。

      > 変なところで、つぶやいて自己満足にひたってないで、
      togetterが全然変なところだとは思いませんし、ただの愚痴ではなくて結構レベルの高い、笑えるつぶやきのまとまりだと思いましたが。

      > 現実を直す努力をすれば、良いんじゃないの?
      ちゃんとtogetter読んでますか?彼は現実を正す努力をしてたりもしますよ?
      彼だってスーパーマンじゃないんですから、grep使うのも却下されたりしたら、そりゃめげますよ。

      親コメント
  • by metta (20740) on 2010年08月17日 11時49分 (#1810647) 日記

    > SIに限らず、「技術的な客商売」をやっていると、
    > 時として打合せの時に「簡単ですよね」という「挑発」を受けることがある。
    > それが実際に簡単であるかどうか、また相手が本当に挑発しているのかは別にして
    > これは一つの「挑発」だと受け取った方がいい。
    > なぜなら、あいての意図はどうであれ、そこにはいわゆる「罠」があるからだ。
    「簡単ですよね」という挑発 [nurs.or.jp]

    簡単。簡単と上司が言い始めたら、酷い指示 or その前触れ。

    • by gonta (11642) on 2010年08月17日 15時05分 (#1810870) 日記

      「**さんがやるとしたら、どうします?」
      というのも受けるな。挑発ではないと思うんだけど。
      「やらない!」
      といったら相手絶句してた。理系の人々からのパクリなんだが。

      --
      -- gonta --
      "May Macintosh be with you"
      親コメント
  • >「メソッドを作ると処理が上下に飛んで可読性が落ちるので、出来る限り一つにまとめてください」と言われた。

    ケースバイケースなんだけど特に業務ロジックなんかはこれで良いと思う。
    どうせ業務的な機能単位・業務的な処理単位に分けても再利用なんてしないんだし、その可能性もまず無い。

    気ぃ効かせてわけたつもりでもどうせ上から下まで一直線のロジックなのにあっちこっち飛んで読むのめんどくさいだけ。IDEの機能使えばまぁ追えるけどさ、わざわざセンスの無いメソッド名と引数名付けてわけられてもね。変更あったときも修正に手間かかるし。
    そのくせ、小さいIF文で同じことの繰り返しなんかは抽象化してメソッドにわけれるのにやってない。
    メソッドの先頭に全部ローカル変数定義してる。

    なんてコードだらけのプロジェクトもあるわけです。

    だらだら長くても変数のスコープが最小化されていて、無闇やたらローカル変数を切らないで適切に書けば読みにくくはならないし手間もかからないんですよ。
    変にオブジェクト指向っぽくしようとするのは無意味。
    最終的に出来上がった数々の部品の組み合わせてだらだら並べたバッチ処理みたいのが読みやすい業務ロジックじゃないですか?

    そういえば三項演算子はわかりにくいから使うなっていうところがあったな。DECODE(ORACLEのSQL)はOKなのに。

    .NETで全メソッドを全部try~catchで囲めとか。折角の例外情報を捨てて上位にスローすれと。try~catchで囲まないと他の囲っているところと違うから保守性が落ちるとか。例外情報捨てたら保守性ガタ落ちだっつーの。

  • CPUに考えてもらう (スコア:2, おもしろおかしい)

    by Anonymous Coward on 2010年08月17日 20時22分 (#1811098)
    とあるゲームの敵を作る簡単なお仕事。
    指示書に"CPUの行動はプレステに考えてもらう"とあった。詳しい話を聞きに行くと

    企:"だからぁ、CPUのターンならプレステがキャラを動かして…"
    俺:"? どこへ動かすんですか?"
    企:"CPUが考えたところやろ(怒!"
    俺:"CPUの動作条件を教えてください!"
    企:"そんなもん知らん!プレステを調べろ(怒!"
    俺:"…?"

    その後、俺はCPU=R3000A⊆プレステ≠CPU(AIキャラ)=プログラム≒仕様という公式を教える大切なお仕事を(ny
  • by Anonymous Coward on 2010年08月17日 11時30分 (#1810617)

    そして、
    「そんなものが欲しいのじゃない」

    一見、全権を委ねた様に言葉だけは見せかけている。
    しかしその実は自分の手間を省きたいだけで、決定権を一切委ねる気が無い奴に限ってそういう指示をする。
    そういう奴は往々にして、端っこのフォントのサイズに迄口を挟む通常より口うるさい相手だ。

  • by Anonymous Coward on 2010年08月17日 12時20分 (#1810693)

    プログラミングの経験がほとんどないままシステム設計やサポートすると
    下請けからの(苦労して対応した)結果報告や解決策だけを聞いて自分も「わかった」つもりになる。

    だから、新しい問題に対しても「◯◯を△△すれば難しくないでしょ」と「わかった」つもりのまま
    ハァ?な浅い事を言って周りを冷笑、辟易させる。

  • システム運用の為のスクリプトを書いていたんだけど、bashだけじゃどうにも埒が明かないので「PythonかPerl使って良いッスか?」とボスにお伺いを立てたら返ってきたのがこの答え。

    しょうがないからbash + awkでむりやり書いたが、大層みっともなくなった。

  • 田舎に帰りたくなった。
  • PHPでPC用のサイト作ってて
    「画面タッチするだけでリンク動くようにしてよ、銀行のやつ(ATM?)みたいに」(別にiPhoneとかではなく、普通のパソコン全てで画面タッチするとリンクするようにしろ、ということらしいです。)
    というのには悩みました。「できません」て言うと烈火の如く怒り出す人なので。
    ちなみにその人の役職は「しすてむえんじにあ」でした。

    あと、「女性プログラマーはスカート、丈はひざ上のもので」とか言われたことあります。
    そのルールが嘘だとしったのはプロジェクト立ち上げの時でした……
    #女は私しか居なかったとか
    #セクハラだけど訴えたら仕事干されて終わってたし

    IDでいいや(。。

    --
    神社でC#.NET
  • 新人の頃、C言語で以下のようなコードを書いたら、


    int func( ) {

            for ( ) {
                    処理1
                    if (処理1失敗) goto ERROR
            }

            for ( ) {
                    処理2
                    if (処理2失敗) goto ERROR
            }

            正常処理
            return 0;

    ERROR:
            エラー処理
            return -1;
    }

    goto文は禁止ということで、上司に以下のように訂正させられたことがありました。


    int func( ) {
            int error_flag1 = error_flag2 = 0;

            for ( ) {
                    処理1
                    if (処理1失敗) {
                          error_flag1 = 1
                          break;
                    }
            }

            if (error_flag1 == 0) {
                    for ( ) {
                            処理2
                            if (処理2失敗) {
                                  error_flag2 = 1
                                  break;
                            }
                    }
            }

            if (error_flag1 == 0 && error_flag2 == 0) {
                    正常処理
                    return 0;
            }

            エラー処理
            return -1;
    }

    どう見ても訂正後の方が読みにくいだろうといったら、ルールだからと(←いや、あなたが決めたんでしょ?)

    --
    -------- tear straight across --------
typodupeerror

アレゲはアレゲを呼ぶ -- ある傍観者

読み込み中...