忍者ブログ
雇われるだけの人生から目指せ独立、社会人2年目なゲーム脳SEのブログ。更新頻度=週2~3回。
[215]  [214]  [213]  [212]  [211]  [210]  [209]  [208]  [207]  [206]  [205
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

まだ私は社会人2年目の若造プログラマなのですが、もろもろの事情により今年入社の08新卒の方々のメンターとして指導する側に回ることになりました。
せっかく教える側に回るのですから、教えられる方々には是非イケてる人になってもらいたいです。
というわけで、新卒の皆様の参考になればと、以前にも書いたようなネタですけど、改めてイケてるプログラマのソースとイケてないプログラマのソースを見比べて、何がその差なのかを調べてみました。

まずは例をいくつか挙げてみます。


○イケてない英語、フランス語
たとえば今の現場ではこんな感じの例があります。

gross
(総計、総合金額)
gloss
(光沢、つや、うわべの飾り)
enquete(アンケート、フランス語) enquate
(何語?)

ほかにも沢山沢山ありますが、省略。

○イケてないコードスタイル
たとえば、インデントがタブとスペース混合。行末に意味のないタブやスペース。
タブを^、スペースを_で表現すると、
^^^^____^^^^____hoge.fugafuga();^^^^^^^^
________________foo.bar(hoge);^^^^
平気でこんなソースが。そこらじゅうに。

○イケてないSQL
0以上5以下の小数(小数点以下2桁まで)の、小数部を取り出すためのロジックが、
TO_NUMBER(SUBSTR(LTRIM(TO_CHAR(var_num, '0.09')), 3, 2)) 
これです。・・・うーん、書いてる本人は必死に作ったものなんでしょうけれども、
これはイケてないですね。


こういうことを書くと、
  • 変数名ぐらいで何ムキになってんの?
  • 動けばいいんじゃね?modとか知らないし意味わかんないし!
という反論が、たいてい、飛んできます。

常々私は周りの人に
「変数名は自分の子供の名前だと思ってつけるものだ!!」
とエラソーに語っています。
自分の息子に太郎やら花子やら、「騎士と書いてナイトちゃん」と読ませるようなセンスのない名前をつける親になりたいですか?なりたくないですよね。
自分の息子に「大輔」と言う名前をつけようとして、手が滑って「犬補」と出生届に書いてしまったら、出生届ごと破り捨てて書き直しますよね?まさか、「アハハハ!いぬほだってよ!これでいくか!!」なんてバカなこと言いませんよね?
なぜなら子供に一度つけた名前は一生消えないからです。一生名づけの親はその名前を見て笑われることになるからです。

変数やクラス名、ロジックだって同じです。

自分が一度書いたソースは(特に大きなプロジェクトでは)5年10年の間、平気で残ります。
「後から誰かが直してくれる」なんてことは、Googleのような一部大例外を除いて、絶対にありません。これは保障します。
5年後に保守に入った人に「何このセンスのないソース・・・読みづらいし意味わかんないし、こんなの保守したくないなぁ・・・」と思われることこそ、プログラマにとって何物にも変えがたい屈辱であります。

にもかかわらずその5年後のことを考えない輩が異常なほど多い。

grossとかenqueteとか、わからないならGoogle先生に聞くなり辞書サイトで調べればいいのに、その手間すら怠っているのです。もしくは、調べたけど何か結果が出てきたから、中身を吟味すらせずに妄信したのかもしれません。
商品の金額に関係するクラスなのに、どうしてgloss(光沢、つや)なんて意味をつけているのか、と疑問に思うことが出来れば、発音は同じグロスでもglossではなくて別のつづりの単語ではないかと思い直すことが出来たに違いありません。

0以上5以下の小数(小数点以下2桁まで)の、小数部を取り出すためのロジック、
これだって、一度書いてみて明らかに変だと思ったなら、

Googleに"Oracle 関数"と検索クエリを投げて(30秒)、

http://www.shift-the-oracle.com/sql/functions/function-base-reference-1.html
このページを見つけ出し(1分)、

関数の内容を吟味して使えそうなものを割り出し(5分)、
http://www.shift-the-oracle.com/sql/functions/mod-remainder.html

手元のSQL実行環境でテストすれば(2分)、
SELECT mod(2.03, 1)*100 FROM DUAL
たったの8分かそこらで、よりよい解決策が見つかるのです。
ページを探すのに時間がかかっても、10分もあれば解決できるのに、
「まぁ、動くからいっか!次次!」
なんて思考停止して次に行くから、こうして数年後に私のような若輩者にコケにされるようなソースになってしまうのです。


と言うわけで結論。
イケてるプログラマと、イケてないプログラマの差は、
  • イケてないコードに気づくことが出来るか
  • イケてないコードを無視しない勇気があるか
  • イケてないコードを修正するために10分考える習慣があるか
この3点ではないかと思います。ではどうすればこの差を埋められるのか?
  • イケてないコードに気づくためには、イケてないコードだと認識できるだけの知識が必要!→勉強するぞ!
  • イケてないコードを無視しないためには、自分の首をかけて「これは間違っている!」と言うだけの熱意と説得力が必要!
  • イケてないコードを見つけたら、どうすれば修正できるのか頭の中だけではなくて実際に調べ検索し試し動かして検証する!
こんな感じで、少しでもイケてるプログラマに近づければ幸いです。
PR
この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
redの冨田です。
恥ずかしながらアンケートがフランス語だということも初めて知りました。
これも勉強ですね。

新卒ではないけれど、私もメンターの方について欲しいです><
ツネ 2008/06/22(Sun)23:14:35 編集
Re:redの冨田です。
わざわざこちらにコメントありがとうございます!

英語だとアンケートはquestionnaireですね。
これもクエスチョニアという発音はご存じの方多いのですが、
綴りを調べないでquestionareとか適当に書く人もいたり。
勉強とはまさに、ちょっとでも自信がなければ調べる!これですね。

私で良ければメンター代わりになりますがいかがですかーw
【2008/06/23 23:44】
いけてない?とかいけてるとか。
うーん(笑)

いけてない人ほど,
「処理を線で表現することが出来ていない」と思うんだよね。

いけてるコードを書ける人は
慣れてるから処理の流れを図面にかかなくても
頭の中で処理の流れを想像できるから
図面を紙にかかなくても美しいコードをかけるけども,

中途半端な知識ってのは,
最初から図面を書かないことをまねしちゃっていて
どこがどうながれてどうながれるから
どこがどうしておかしいっていうのがわからないんだよね。

だから,いつまでたってもスペースがおかしいとか
コードの書きかたロジックが身につかないんだとおもう。

まずは何がなんでまずいかを
ちゃんと紙とか何かをつかって,
目で追えるようにしてあげたほうが分かりやすいかもしれません^^



いやー。
関数とか変数名が適当な人は
後で苦労するのが好きなんだよ。きっとw;
めそ凹 すね丸 URL 2008/06/23(Mon)01:46:18 編集
Re:いけてない?とかいけてるとか。
なんだか深い考察wありがとうございます。
「処理を線で表現することが出来ていない」ですか。
なるほどたしかに、現代のプログラミング言語は一部の例外を除いてほとんど手続き型、上から下に線形に処理が流れますね。
(関数型言語、lispとかerlangとか、それからスレッドやり始めるとがらっと変わりますけど・・・)

たしかに、ロジックの「構造」というか「固まり」が見えてらっしゃらないというふうに感じるときがあります。
一番思うのが、研修の問題を解いている最中に、インデントを全くしない人。
かっこをつけたりインデントをつけたりして、構造をわかりやすくしようとしないので、余計分かりづらくなってたり・・・
構造が見えていないということなんでしょうか?

>まずは何がなんでまずいかを
>ちゃんと紙とか何かをつかって,
>目で追えるようにしてあげたほうが分かりやすいかもしれません^^
わかりました、次研修生の方に教えるときにやってみますね!

あとで苦労するのが好きな人なんていませんよw
たぶん、その「後」を見抜く想像力が足りないのかなーと思います。

想像力、イマジネーション、イメージングってすごく大事だとおもいます。
芸術美術だけじゃなくて、仕事にスポーツ恋愛、何をするにしても。
【2008/06/23 23:49】
この記事へのトラックバック
この記事にトラックバックする:
カレンダー
02 2024/03 04
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
ブログ内検索
最新コメント
[11/13 DSLR-A850]
[08/29 逆援助交際]
[08/23 クンニ]
[08/22 熟女]
[08/19 痴漢]
はてなブックマーク
プロフィール
HN:
akisute
性別:
男性
職業:
システムエンジニア
趣味:
ゲーム・東方・ニコ動。あと散歩。
バーコード
推奨環境

横幅900px以上、Firefox 3, Safari 3, Opera 9.5, Chrome 0.2以上。IE7ギリギリ対応。IE6未対応。

忍者ブログ [PR]