幻想プログラマー森君(仮称)の残した傷跡

同じプロジェクトで1ヶ月面倒見ていた後輩の森君(仮称)は プログラマとしてダメな人でした。 全然ダメなんだけど自分は出来ると思い込んでるらしく、そげぶ! という訳で淡々とダメな所をまとめました。 このまとめは反面教師として、皆様の後輩の教育目的で 続きを読む
3
きゃべつ @cabbagestole

聞いてくださいよ。後輩の書いたSQLに where hoge >= x and hoge < x とか書いてあるの。それで「1行もデータ出てきません!DBのデータがおかしいです(キリ」とか言ってるの。出るわけねーだろ!

2011-06-22 22:18:07
きゃべつ @cabbagestole

この後輩、森(仮称)は色々トンデモエピソードがあって1ヶ月萎えまくりだった。エピソードを思い出してみる。

2011-06-22 22:20:05
きゃべつ @cabbagestole

「from年月日時分とto年月日時分の合計10個のセレクタがあって、from-toの範囲が1日を越えていたらalart()を表示する」という要求に対し、セレクタの値変える度にalart()だしやがる。ウザイ。 onSumit の時に判定だろ!?常考。

2011-06-22 22:24:37
きゃべつ @cabbagestole

森君のトンデモ:(JavaScript) id属性とname属性の引数を直前まで持ってきてるのに、getElementById()にname属性変数与えるコードをリリース。当然動かない。言い訳が「あれ?開発中は動いていたのに」

2011-06-22 22:30:57
きゃべつ @cabbagestole

森君シリーズ:(php/Smarty) テンプレートファイルを所定位置でない所に配置してsvnに登録。当然動かない。言い訳が「開発サーバにはちゃんと置いたんですが」現地リリースする時に違う場所に配置されるだろ常考。

2011-06-22 22:34:17
きゃべつ @cabbagestole

森君おやくそくシリーズ: if( true == foobar) と書かずに if (foobar = true) と書くクセがついている。やっちゃいけないお約束の基本をしっかり押さえてるwww(当然代入されるから評価式は変数の値によらず常にtrue)

2011-06-22 22:37:39
きゃべつ @cabbagestole

森君はいはいくまくまシリーズ:linuxがターゲットなので ソースコードはUTF8でLF改行で書いてください→当然のようにSJIS+CRLF改行で書いてsvnにチェックイン!

2011-06-22 22:40:53
きゃべつ @cabbagestole

森君(略:過去2年間事あるごとに正規表現使えとやってみせ、言って聞かせて、させてみてしてるんだが、未だに substr,substr,substr。

2011-06-22 22:48:41
きゃべつ @cabbagestole

森(ry:「自分情報処理の専門出てるんで(キリッ プログラム任せてくださいよ(キリッ」 森君のすごい所は(1)学習しない(2)成長しない(3)すぐ忘れる 。これで情報処理で飯食っていけると勘違いしてる所

2011-06-22 22:50:44
きゃべつ @cabbagestole

まだ思い出したけどすっきりしたからいいや。また明日から森君の書いたコードを捨てて書き直す作業が始まるぉ

2011-06-22 22:53:45
きゃべつ @cabbagestole

森君はもうPJから放逐したけど傷痕は残る。実効の無いコード書いてあったり、ソースファイルの文字コード間違えてるだけなのに無理矢理mb_encode()使って矯正したり、日付の書式違うの確認しないでリリースしてたり。

2011-06-24 10:19:34
きゃべつ @cabbagestole

森君は文字列至上主義でオブジェクトを使わないが、SQLに展開したとき Where datetime = TO_TIMESTAMP('2011-06-23', 'YYYY/MM/DD') とやってしまう位に、言語毎の時間文字列表現の違いを理解してる訳では無い。

2011-06-24 10:34:10

また一緒に組むことになったので続編を追加

きゃべつ @cabbagestole

今年同じ部所から退職者が多い。そのうち一人の担当PJを引き継ぐ事になったがここでまた森君(仮称)と組む事になった。PJはプロトタイプ開発で進められプログラム作成テストは完了、ドキュメントを整備して納品するだけの残作業の筈だが、未整備のドキュメントを見てまたアイタタを発見・・・

2011-11-25 10:46:03
きゃべつ @cabbagestole

具体的には手順書のユーザ設定項目のパラメータ名誤記が酷過ぎる事。key-value形式で動作パラメータを設定するのだけどこれが酷い。以下森君(仮称)シリーズの誤記リスト

2011-11-25 10:55:42
きゃべつ @cabbagestole

☓ ConfigRation ◯ Configuration 頭大文字の規約で作ってるのでどうやら森君は Config と Ration の合成語だと思ってるらしいw

2011-11-25 10:58:00
きゃべつ @cabbagestole

☓ Worning ◯ Warning いや確かに「ウォーニング」って聞こえるけどさw

2011-11-25 11:00:13
きゃべつ @cabbagestole

☓ MENTTOOLE ◯(多分)MaintenanceTool 何故か全て大文字。メンテもツールもタイポw スペルが長くて省略してごまかそうとしたが2文字目からいきなり間違えてるからその戦略も破綻w

2011-11-25 11:05:33
きゃべつ @cabbagestole

今までのは全てキー側の誤記。バリュ側はその機能のOn/Offを設定するだけだけどこれがまた戦慄する値に

2011-11-25 11:07:18
きゃべつ @cabbagestole

値は E または I とする。E,Iは Effective, Invalid の頭文字。とあるwwwwww 対語なら Enable Disable だろうに。値は一文字とか自分ルール持ち込むからOn/Offと選択できず自分で首絞めた結果だろ

2011-11-25 11:10:39
きゃべつ @cabbagestole

森君シリーズに追加しておこう

2011-11-25 11:12:49

2011/12/14追記
やっちゃいけない事のテンプレート集に出来そうなのでコツコツメンテしよう。
またまたネタを提供してくれた森君に感謝(!?)しないと。

きゃべつ @cabbagestole

天然で難読化コードを書く森君(仮称)は闇プログラマーに違いない

2011-12-14 09:01:31
きゃべつ @cabbagestole

ただの業務アプリなのに何故かSQL文がファイルに外出し。理由は「将来変わるかもしれないから」「で変わる可能性はあるの?」「ありません」 ハードコードでいいよ…

2011-12-14 09:12:51
きゃべつ @cabbagestole

ストアドプロシージャの中見たらSELECT文を実行するだけ。理由を聞いたら「where句の値を設定する為」バインド変数使えよ…

2011-12-14 09:15:12