アンチパターン

俺アンチパターン②:一枚目のカード

アンチパターン名:一枚目のカード

別名:一撃必殺という妄想

頻出スケール:アプリケーション

再構想解の名前:三歩必殺、バックステップ、コードレビュー、プレッシャーブレイク

再構想解のタイプ:プロセス

根本原因:無精、拙速、プレッシャー、不勉強

挿話証拠:「この方法でうまく動作したから…」

うー☆

何がなんだか分からない人も多いと思う。

だからよく陥る。というか僕も陥りっぱなしだ。だからこそ気をつける必要がある。

例を出したほうが分かりやすいと思いますが…こういうことです。10秒以内に答えてください。

問い:1から10000まで足した合計を表示するプログラムを書け

で、まぁ問題解くときには字面どおりにプログラム組むのが一番最初ですね。しかも時間が足りないとなると頭を使う時間もない。だから以下のようなプログラムを書く。

answer=0;
for i=1,10000 do
    answer+=i;

end
printf("answer=%d",i);

てな感じでしょうか?で、これをもう採用しちゃう。時間もないし。プレッシャーあるし、上司怖いし。自分も面倒だし。ちゃんと動くし、これでいいや。

でも、これ、ガウスの公式知っている人ならこう書きますよね?

answer = (1+10000)*(10000/2);
printf("answer=%d",i);

ある数から、ある数までの等差数列の和を一般化するなら、こんな感じ?

function PrintSum(Start,End,Count)
    printf("answer=%d",(Start+End)*(Count/2));

end

大切なのは、切羽詰って視野狭窄に陥っている自分に気づくこと。もうプログラミングテクニックじゃないね。早くこの息苦しいプレッシャーから逃れたいから、一番最初のアイディアに飛びついちゃう。

視野狭窄を解消するためにはプレッシャーを取り除いてあげること、まぁこれは上司の仕事なので、かなり難しいと思っておいたほうがいい。自分を変えることによって何とかしよう。

・面の皮を厚くする
・きっともっといい解があるはずだという信念を持つ

ということになるんだけど、これでも難しい人への指針として、

・とりあえず3つ考える。パクリでもいいよ。3つだよ。三歩必殺だよ。1で崩して2で攻撃、3で次に備えるだね。全然違うね、ごめんね。

だいたい3つ考えてたら頭が冷えて、マシな解を選ぶと思う。もしくはその解をもって他の人に相談する。自分は視野狭窄だからね。

とにかく今の自分を一歩引いて(バックステップ)観察してみよう。プレッシャーで実は頭が働いてないんじゃない?

プログラミングは結構自分のコンディションに左右されるから、僕が健康第一ってのも理由はここにあるんDA!

| | コメント (0) | トラックバック (0)

僕の考えたアンチパターン①:新興宗教サンプル教

アンチパターン名:新興宗教サンプル教

別名:サンプルマンセーと言う名の手抜き

頻出スケール:アプリケーション

再構想解の名前:サンプル剥奪、コードレビュー

再構想解のタイプ:プロセス

根本原因:無精、拙速

挿話証拠:「サンプルにこう書いてあるんだから間違いない」

記念すべき第1回パターンはサンプルマンセーについてだ。

実は前のプロジェクトでも、メインループの部分に不可解なコードが書いてあったので、それを書いた先輩に質問したところ、「サミーのサンプルをコピーしたのだから間違いない、下手にいじるな」と返答された。

( ゚д゚)ポカーン

(゚Д゚)ハァ?

(´Д`;)ハアハア…

新入社員ならまだしも、勤続年数がそれなりにある先輩のこの答えは、新入りである僕を驚かせた。

…結局答えてないじゃん。

はっきり言おう、サンプルは絶対ではない。もっと言おう、サンプルは特定の基礎的な状況にのみ適応するコードだ。いや、もっともっと言おう、サンプルはその会社の新入りに書かせたコードである可能性があり、コード自体があまりよくないこともある。

悪いけど、某社のサンプルでも、「なんだこりゃ、このマクロは何を意味してるんだ?」

というのが、後輩の書いたコードに埋め込まれていたので、質問したら案の定

「サンプルにそう書かれていますから」

いや、もちろん僕もあれだ、同じ間違いはした。そう、そして痛い目にあった。不具合が起きた場合に対処できないのだ。

なぜなら、理解できないままに、そのコードは「動いてしまう」のだから。ある意味、スパゲティコードよりたちが悪いと言えよう。

そして、理解できないままに動いているコードとコードが組み合わさって、そしてある日、バグを引き起こして…どこがおかしいのだかわかりゃしない…。

確かに、上司は滅茶苦茶言う、1日で作れと。むちゃくちゃですね。24時間フルに使ってもできっこない。じゃあどうするか、サンプルコピペ。

もちろん無茶苦茶な上司にも責任あるが、後で苦しむのは自分だ。自分だけだ。そんなとき上司は何食わぬ顔でバグの責任を追及してくるぞ!

オムロンの社長は「できませんと言うな」と、格言を残しているけど、ことソフトウェア開発について、俺は言いたい。

「できます」と言うな。できないんだから。急いだ分のツケは回ってくるんだ。

さて、コレに対する対処法。

①サンプル全削除(やりすぎ)
②コードレヴューの習慣(他人に説明する以上コピペはできなくなるだろう)
③できない人間のフリをしておく(プライドを捨てておく)

なぜ③があるのかというと、プライド高いと「できます」って言って、あとで皆に迷惑かける。そんなものはいらん。むしろできない人間のフリをしていれば、「1日でやれ」とは言われにくい…はず。

| | コメント (0) | トラックバック (0)