2009年7月14日火曜日

Velocity

Velocityを使ってるライブラリでSingletonモデルを利用されると困る。
というかひとしきりハマる。VelocityEngineをDIで作って、
使う場所ではオブジェクトとして受け渡すというのが正解なのかなあ。

2009年7月8日水曜日

うむ

深夜仕事をしてる人はたいてい煮詰まってるのであまり訪ねるのはよしておこうと思いました。

2009年7月7日火曜日

プログラムが書けるということ

  • 全くプログラムを知らない人がプログラムを書けるようになるにはどうしたらいいかというのを真剣に考える必要がある。
  • 技術者はいつだって不足だ。つか、ここ二年ばかり新人さんづいている。
  • まず前提としてぼくは全然凡人だしなんか新しいものを独自に作ったりとか独自のすばらしいデザインで創作したりとか、根気よくひとつことを続けてなんてことはできない。
  • それは謙遜でなくそう思う。WEBを見ればすばらしく書ける人なんていくらもいるし。あーおれは根性が足らんのだなと常々思わされる。
  • ただまあ仕事を続けてる上ではお金になったものもいくつかあるしいわゆる書ける人ではある。
  • 自分を振り返ると、中学生のころは全くプログラムとか書けなかった。親に高いパソコンを買わせて実際親不孝者を道でいっていた。あの当時だからパソコンなんて珍しい。まあ素地としてマイコン時代に触っていたというのはパソコンに対する抵抗をなくすためによかったかもしれないが。そんなのは正直誤差程度の話だろう。
  • 大卒してパソコン買った契機に世の中に言うプログラミングというやつを少しよこしまな思いもあり多少いじったが。ほとんど全然身に付かなかった。衒学嗜好かK&Rなんて読んでた。いわゆる志向性というものはあっが、まったく全然身にはついていなかったし。仲間を探すのもヘタで人付き合いなんてのもよろしくないほうなので、しばらくして断念して、インターネットをさわってあとはやっぱりゲーム機みたいになっていたように思う。
  • そのころ、あの時期の景気と人あぶれから好きな仕事になんて当然つけず、まあそもそもやりたい仕事に適正もあったが今となっては謎なのだが。企業のインフラやERPの構築管理をする仕事についた。
  • 実際いじるような環境になって。そんな自分でも人よりはコンピューターに詳しいのだなということに気づくことになる。そこはホスト機からの流れをくんでるような古いSIerで、まあ詳しい人がゴロゴロいそうなもんだが。
  • 時期的に丁度Windowsが普及しだしてクラサバの環境があちこちに作られだした時期IT化がまわりはじめた時期というのもあるかもしれない。
  • 最初は交通費清算システムのようななものをLotus Domino、Lotus Notesで作成した。ペーパーレス化の一環というやつ。他にはインターネットを調べたりしながら、企業内のメールとかインターネットの利用規則のようなもの、つまりITリテラシの基準を作ったりとか。いま思えば、大卒数年の人間がそんなの作ってよいものなのかしらとも思うが。面倒だし他によく知る人間もいないんだから仕方ない。
  • そんななか、社内システムとして構築したもののひとつをお客が気に入り、なんか客先に出すことになって事業化しようというような話になる。そのころにはLotus NotesでWin32APIを呼び出してとかそんな凝ったこともできるようになっていた。
  • このあたりの謎の技術向上は、作るものがあったということと、あとはインターネットさまさまで、まあ根気よく調べればたくさん情報は当時もあったのである。ぜんぜんオブジェクト指向もなんもわかりませんし、まあ興味はあるが今思えばひどいコードを書いてたように思うが誰も教えてくれはしないんだから仕方がない。でそんな状況で作ったものを客先に組み込むなんていろいろまずすぎる。
  • それに前して後してかはよく覚えてないが、このあたりで真剣にC言語の勉強をしたように思う。まず目に付く本はかたっぱしから買って積んだ。積んだだけでは勉強にならなかった。このように追い込まれている状況では形だけでは何にもならないと悟った。
  • 何がきっかけかは思い至らないが、というかその本の序章にはそう書いてあるのを、とにかくまじめにやってみようと思い至ったのか。独習Cという本。その本の一章から200本近い、短いソースコードを全て写経して、コンパイルして実行。ということを一ヶ月ちかくに渡り行った。独習C++もあったがそれは半分もいかず諦めた。
  • それで別にプログラムができるようになったわけではなく、正直ポインタとかちんぷんかんぷんで、いろいろひきづることになったが、まあなんとなく自分でプログラムを書けるようになったのだと思う。
  • そのあとはまあ知らないなりに無理無理いろいろ書いて、そのなんかわからない理由で客先に納入した製品も、正式にプロダクトとなり、悪夢の社内ベンチャーと化し、おれは増長して、精神をやんだりしたのです。
  • それはさておいて、翻って見ると。プログラムの仕方は基本的に誰も教えてくれはしないし、作ったものをいじるのではなく、イチから作る技能を身につけようと思うと凡人レベルでは写経による記憶へのスリコミが必要なくらいには大変な話なのだ。というか分かる人には、そこにそう書いてあるじゃないレベルの話で、それをイチイチ説明することはとても面倒くさくてできないし、説明される方も説明されてるうちに面倒でなげだしてしまう。
  • IT業界の人間は多いのだけど、プログラムをいちから設計して作れる人間はあまりいない。プログラム以外の知識まあつまり業務だとか楽しいことをそこにさらに積み上げるというのは加えて難しい。ある意味そんな状態だからおれなんかにも仕事はあるんだが、でもその流れで業界が流れてきて、一時期アウトソーシングの流れとかもあったりして、この業界自体がいやーな方向に向かってるなあというのは常々感じる。というか昔からエセ技術者の頭をカポカポ叩いて回りたい欲があるんだが。手が疲れるし外聞がわるいし。人に言わせると俺だけの主観のようなのでやらない。
  • コンサルめいた要件でプログラムを見せてもらうたび、ひどいなあという感想をもつのがたいていで企業がプロダクトとして出してるものより、オープンソースのソフトウェアのが数倍マシなのである。
  • ぶっちゃけ、子供の玩具の方が安全もふまえてきっちり設計されている。建築とか機械産業に比較なんて申し訳なさすぎる。
  • 高卒の何も知らないような子を一度下につけたことがあるが簡単にコンピューターの基礎を把握したら、全然他の社員より上手にコンピューターの操作ができるようになったし、少し気になっていたあの子と結婚して幸せな家庭をきづいてるんじゃねえぞ馬鹿やろう。みたいな。本人の情熱もあるが効率のよいやり方をおぼえればえてして仕事なんてそんなもんなんだろう。
  • まあそんなこんなで新しく覚える人には下地をしっかり作ってもらいたいものだと。知識の下地が出来てれば、キャリアを踏まえて正直なところ、あなたは他の80%の技術者風の人たちには負けない。きちんとしたプログラムは上の方の10%くらいで行われている。プログラムを続けるなら勉強しつづけて上の方の10%くらいに常にいることが大切だと思う。
  • 80%にうずもれれば、そこにあるのは、「どうせオレなんて」という呪いの言葉だ。「オレはプログラムなんてできなくても」とかまあいろいろバリエーションはある。まじめにコーディングしてるほうもそんな言、ある意味たかがプログラムごときで聞きたくないのでよしていただきたい。
  • あと、若いうちだけの呪文だと思うが、自分にはそれしかない、と思いなさい。親に助けてもらうのは癪だろうし、まあそのうちあなたより先にお迎えがくるだろうし、あなたは仕事をしないと生きていけないのだ。幸い職場にいることで機会はあたえられているのだから、それをしっかり自分のものにすれば生きていけるのだ。
  • 総論すると方向を間違えずに努力しましょうというそんな話。万能AIなんて作られることはないし、丸投げのアウトソーシングの有用性は70年代にIBMの調査ですでに否定されている。ワインバーグの著書でも一読するといい。下地のある優秀なプログラマの需要はなくならない。