いろきゅうの(元)はてなダイアリー

はてなダイアリーから移行中…

"プログラマ"という人種を適切に解説したページが消えてるぅぅーーー!!

ので、web.archive.org から引っ張ってきました。

ソリッドウェブ 〜お業界三流サラリーマン戦記〜 - プログラマと付き合う

プログラマなんて職種は、一般人から見て「大変そうだ。よくわからないけど。」という認識があるのではないかと思います。 そんな方たちへ、面白おかしく 且つ 大変悲惨な職業である事を^^;、上手く解説されているかと思います。


いやもうね、実に良い所を指摘してますよ。以下気になった箇所を引用(一部見やすいように修正)



プログラマ損壊率・死亡率は非常に高い

まだ私の周りで亡くなった人はいませんg………あぁ、人間社会的に死んだ人なら 沢山いますネ。(プログラマに限りませんけど)

…そりゃ8人居るわ。コンテストで二位取っちゃうわ。イベントに行けば知り合いが居るわ。○○する人が。 Hahaha!! Hahahaha *1


ちくしょうなんでこんな事に… orz



プログラマはプログラムの快楽を独占する代わりに、プログラムの猛毒を引き受ける

今の私は

  • 学校で、研究用のコードを書く。(めどい
  • 帰宅後、内定先から依頼されたコードを書く。(若干めどい
  • 休日は、新しい分野を実験する為のコードを書く。(面白い*2

そんなプログラマ人生。


彼らの中で、基礎設計や骨組み・棟上げといった、段階的な作業は進められるが、プログラマ以外には、「裸の王様」の洋服のようにそれは見えない。

しかし彼らは物語に出てくるような詐欺師ではなく、立派な仕立屋だ。

コレ、すげーいい言葉だと思うんだよね。 プロジェクトの基盤となるライブラリ見たいな所を作ってる時なんて、目に見える成果物なんてコードしか無い故に 一般の人への説明のしようが無い。場合によっては、同種のプログラマに大しても説明が難しい時もある気がする。


プログラマは成果物以上に、その過程に美的感覚を注ぐ。これはプログラムとプログラマの独特の感覚であり、よい例えが見つからない。
プログラマはそれを、「美しい設計」「美しい仕様」そして、


「美しいコード」


と例える。これらの美しさは、どんな芸術品より彼らの心を強く引き付ける。


しかし、困っちゃうのが、プログラマ以外にはこの感覚がサッパリ分からないことだろう

以下、何れも結果的には同じになるコード

普通のコード

int func(HOGE* psHogeList, size_t nListSize)
{
    double dValue = 0;
    for(size_t i  = 0; i < nListSize; ++i)
    {
        dValue += 0.5;
        psHogeList[i].Draw(dValue);
    }
    return 0;
}
汚いコード - C言語学習中に書きそうな感じ

int func(HOGE* psHogeList, size_t nListSize){
    double dValue = 0;
    for(size_t i = 0; i < nListSize; ++i){
        psHogeList[i].Draw(dValue += 0.5);
        }
        return 0;
}
美しいコード

int func(HOGE* psHogeList, size_t nListSize)
{
    namespace bll = boost::lambda;
    double dValue = 0;

    std::for_each(psHogeList, psHogeList + nListSize,
        bll::bind(&HOGE::Draw, bll::_1, bll::var(dValue) += 0.5));

    return 0;
}

……美しいよね!? ネ!?



boost はいい…
 心が洗われる…













美しい設計と仕様くらいなら、SEクラスならまだ理解できるが、美しいコードなんか本気で分からない。
(中略)
「こんなので汚いだ美しいだ……こいつら頭おかしいんじゃないのか!?

ぎゃふん!



- 仕様変更

いやもう、これは この項目名だけでもうお腹一杯です


プログラマは、最高の肩書であるチーフプログラマに近づけば近づくほど、労働条件が急激に悪化する仕組みになっている。

私はまだ大きなプロジェクトは抱えた事は有りませんが、おそらく設計だーのなんなので、内部ドキュメントを書く量がふえるんちゃいますかなぁ…。 コード書く量が減るので、ストレスが溜まってくると。


- デバッグ
バグ取りはプログラマにとって修行……いや、死業と言ったほうがいいかもしれない。

デバッグ? 楽しいよ? ウン?(泣きながら


大学で培ったテキトーな知識で、

「必要な情報を printf すりゃいいじゃねーっスかー」

などとヘラヘラ言おうものなら、転蓮華で首をヘシ折られてしまうだろう。

printf でデータを出力していくように書くのが大変だわ(そして解除も)、一発で原因箇所が分る訳無いので試行錯誤でデータ出力箇所を経こうしていかなきゃならないわ、もそもそも問題箇所が分った所で、それを回避する為のロジックに悩む事になるわ…!!


バグのないプログラムとは、バグがまだ出ていないプログラムに他ならない。

(もし、バグがまったくないプログラムを書いて渡してしまったら、プログラマはどうなるか想像してほしい。喜ぶだろうか? いや、恐ろしくて不安で夜も眠れなくなるだろう。)

100行程度書いて、一発でコンパイルが通り、正常の動作してしまった時の恐怖といったら……。 イベント1日前の作業中に「間に合うか!?間に合わないかっ!?」っていう恐怖より怖い気がします。


……ぐへぇ orz



 マ ス タ ー ア ッ プ

私的には

いいいいいいいいいいいいいやっはあああああああああああああああああああああああああああああ!!!!!!!!!!!!!!!!!!!!!

って感じ。まだ、100%仕上げた作品なんて無いけどネ :)



このマスターアップという独特の儀式があるからこそ、プログラマの損壊率が一層高まっているのは間違いない

全くだと思います。

「頭が悪い方面(何」で破損していくような気がしますね。




いやねー、根本的に何が悪いかって、物理的に目で見えるモノを創るよりかは、アルゴリズムみたいな目で見えない論理的な部分を創っていること何じゃないかと思います。

目で見えないから、プログラムを知ってる人じゃないと分らない。 いや、相手がプログラマだからといって、正確に伝えて理解してもらうのは難しい。(結局、口頭じゃ分らないのでコード見せてよってなることが多い気がする。)


そして、論理的なモノを製作していくってことはとにかく「考える」ワケですよ。あーでもないこーでもないと何日も何日も。

頭の中は解答を見つけるためフル回転なのに、見た目はただひたすら地味にパソコンの前でカタカタ打ったり、鉛筆などで適当な略図をちょいちょい書くだけなので、

  • 周囲に全然必死さ苦労さが伝わらない -> 一般人「何やってんだあいつは?」 -> 「ぎじょびん orz」


こんなのが続いたら、そりゃおかしくなりますって。(こっちは うつ病方面で破損していくような気がします。)





使っているプログラムにバグが見つかった時、大々的に騒がないで欲しいとは言いません。バグはバグである以上欠陥品*3である事は間違いありませんから。


…でも…


ほんの少しでも「あぁ、カオス空間の中で必死だったんだな…」って思ってくれると、プログラマはうかばれるかもしれません。

*1:あえて今回は隠蔽するぞ!

*2:けど2時間後ぐらいに英文を読むハメになり萎える

*3:ジャンク!?