丸善本店で見かけた本を読んでみた

IT技術者として生き抜くための十ヶ条

IT技術者として生き抜くための十ヶ条

いつぞやのC++Windowsの話ばっかりの(良い意味での)頑固じじいって感じのウェブの管理人がどうやら本を出したようです。ちょっと期待してたんですけど、なんか脈絡がありそうで全然無いような話がまとまりも無く、どういう階層に向けてメッセージを出しているのかが、いまいち分かりづらいような本になってしまったのはちょっと残念だった。

たぶん、好意的に評価するならば、IT業界のスーツと奴隷の間で苦悩している世渡り下手なギーク向けかなと想像する。というのも、帯の「技術職を捨てて管理職になりたいですか」という質問だと、ギークだったら間違いなくノーを突きつける。かといって途中半端に大きい会社だと、一生プログラマという訳にもいかない。だってすんごい単調作業ばっかりだもの。システムコールとか知らなくても済むし、学校で習うようなクイックソートとかバイナリサーチ級ぐらいのアルゴリズムですら、ほぼ出番が皆無ね。

「あなたは、今のソフトウェア開発に満足していますか」という質問でも、ギークなら間違いなくノーだろう。ベンダーから指定された開発環境しか使うことが許されず、もっと粗悪な環境だと未だにvigccだけでがんばるような気合いと根性のみの自衛隊みたいな環境というのも、やっぱりあるところにはあるもんである。「このままでこの先も食べていけると思いますか」という質問は、たぶんギーク向けじゃないんだろうなあと想像する。ギークなら間違いなく自分の技術力に過信しているだろうし、そういう人は食べていけないような境遇になるなんて夢にも想像がつかないんじゃないかな。というと、この三番目の質問は奴隷向けなんだろうか。

序章に書いてある10項目について、ちょっとこれを中心にして本をまとめていけばよかったのにと思うのだが、実際はインタビュー形式で本が薦められてしまっている。帯の裏に「本書の内容」っていうことで10項目ってあるけど、インタビューと10項目が絡み合ってないのが一番の敗因かもしれない。

情報を捨てる勇気を持つこと

やっぱり今日のウェブだけでも、莫大なリソースが毎日生成&消滅されている。まあ、消滅する方はarchive.orgなんかのクローラーがどんどんがんばってくれているおかげで、消滅されてしまって、もう永久に情報が失われてしまったなんてのは、なくなりつつある。というと、やっぱり生成される量>>消滅する量なわけで、生成される情報におぼれてしまうと言うのはほんと昔から言われている問題である。もうかれこれ10年ぐらい同じ事を聞いている気がする。

一番大事なのは情報を取捨選択することなんじゃないかなと思う。同じ情報を出していても、一次情報源と二次三次だとだいぶ情報の信頼度が違ってくる。WindowsAPIのお話だと、ちゃんと一次情報源であるMSDNに行って見てくるという話かもしれない。昔はMSDNはソフトウェアのパッケージについてきて、パッケージを買わないといけなかった。でも今じゃウェブで無料公開されている。二次三次の情報源って、量は圧倒的に多いけど、品質は誰も担保していないから、エントリーレベルしかでていないような薄っぺらい情報ばかりになってしまうこともある。まあ、オープンソースのソフトウェアだと、一次情報はあんまりよくわからなくて、二次三次のほうがちゃんと書かれている場合もある。これは場合によりけりだけど、やっぱり一次から見ていったほうが時間のロスが少ない。

英語アレルギーを取ること

けっこう多いです。まあ、これは英語能力の個人差が激しいのでどうしようもないんだけど。でも一次情報源が英語で書かれている限り、英語をうまく飼い慣らすっての重要な能力たり得ると思う。でも、英語の能力そのものより、文章を見て、自分の中で構造を組み立てて、要点を早く飲み込む能力っていう、英語の読解能力の延長線上のほうが重要なんじゃないかなと思う。これは純粋に英語能力じゃないかもしれないが、やっぱり英語の読み書きができなきゃどうしようもないかもしれない。

一日一回フォーラムに投稿すること

普段はフォーラムめいたところにはいかないんだけど、ちょっと覗いてみました。場所はsysinternalsね。有名なアプリばっかりでけっこうお世話になっているんだけど、フォーラムの参加者はどーしようもないやつばっかりだってのは覗いてみればすぐ分かる。だから、あんまりフォーラムに投稿したりRSSリーダよろしく購読するより、はてなみたいな場所で、ツールチップぐらいの情報を書き続けていったほうが、なんぼかいいんじゃないかなと思う。

フォーラムの一番の欠点は、話題の言い出しっぺが質問で始まることなんじゃないかなと思う。「これこれなんだけど、どうしてこういう現象が起きちゃうのかな?」だと、群盲象を撫でるになってしまって、割と話が分散しがちになってしまう。でも、ブログとかになると、始めに話題ありき、という形になるので、話題が発展しやすい。

劣等感を持たないこと

劣等感は誰にでもある。劣等感の無い人はいない。そういう意味で、10項目に付け足したんだと思う。要するに、周りと比べて自分のアドバンテージを早く身につけろ、っていう事かもしれない。情報分野において、教養的な分野と専門的な分野を両方ともまんべんなく身につけるのはけっこう難しい。プロセスとスレッドの違いとか、OSの基礎的な役割について、現場の開発者で知ってるのって何人いるだろうレベルだ。そういう意味で、劣等感を持ったところで何の得にもならない。

ビジネスモデルを考えること

ギークは技術だけに目が向いてしまっているから、自分の作り出した生産物がどういうふうにお客さんのもとに届けられるかっていうのは、けっこう盲点だと思う。毎日毎日ひたすらPHPのモジュールばっかりいじくっていると、そういう気分にもなるのかもしれない。ビジネスモデルを考えるというのは、ちょっと重要かもしれない。

でもいきなりビジネスモデルを考えるっていうのは、技術的な側面ばかりやってきたら、もう皆目検討もつかないんじゃないかなと思う。今までやってきたことの無い分野を、今日いきなり始めますというのはさすがに無理がある。例えば、システムの営業みたいな分野の人脈を作って、そういう人との関わりを持って、そういう人たちの視点をまねるというのはどうだろうか。これだったらふつーにできそうな気がする。そういうのから、お客さんが望むモノはどういう形で実現可能か、という発想が自然と出来ていくと思う。

楽して仕事することを考えること

やっぱりコンピュータに向かって作業をしていると、自分のやっていることが単調に思えてくるわけです。コンピュータは自動化(定型化)されたお仕事が得意です。というと、単調な作業をコンピュータにさせるというのはごく自然な発想であるわけです。例えばvigccのみでがんばっているような作業を、VisualC++を使って、インテリセンスで楽をするということもできるわけです。デバッグだって、ブレークポイントをそのままぽちっと押してステップ実行するだけでいいんだから。デバッグを可視化できただけでも、今まで手作業でやってきた人から見れば相当な驚き&進歩なんじゃないかなと思うわけです。

先哲のアドバイスを聞くこと

先哲のアドバイスっていうと、どうも会社の上司や先輩、っていう発想になってしまう。でも、今時のオープンソースなら、ちょこっとソースコードをダウンロードして、どういうふうに実装されているのかを調べるだけでも、相当な進歩たりえるんじゃないかと。いきなりLinuxカーネルを覗いてみても訳が分からないだけに終わるけど。

先哲のアドバイスを文章化すること

聞いて文章化すべし、ということなのだろう。日々の業務に忙殺されていると、どうも自分がやっていることのログがうまくつけられない。手順書を書くために、画面のスクリーンキャプチャを取るのですら、ちょっとためらってしまう。やっぱり自分のやってきたことと、先哲のアドバイスをちゃんと文章にして書き留めておくというのは、やっておかないと後で後悔する元となってしまう。同じ事を何回もするのは馬鹿である。やっぱり、文章化して書き留めておいたものは貴重である。

一日一回C++ソースコードをビルドすること

普段、業務でCとかJavaを使っていると、C++から疎遠になってしまう。もちろんCとC++C++Javaは共通点が多いのだけれども、C++にしかない特徴はかなりある。標準テンプレートですらそういう状況なのだから、毎日何かしらのテーマを持って、ビルドするのは大切な習慣かなと思う。

一日一回アセンブラコードを眺めること

VisualC++やgccは、オプションをつけるだけで、C/C++のコードからアセンブラのコードを出力することが出来る。こういうツールを使いつつ、レジスタ単位でどういう動きをしているのかを知って勉強しておくと、コンパイラの最適化絡みでバグを発生させてしまうと、これはコンパイラが先走ったことをしているからかな?と検討をつけることができる。