「IT業界」なんて、ないんだよ。

このエントリは、新卒準備カレンダー 2011春のためのもので、@shuji_w6e さんの「実践する、コツコツと、少しづつ」の次のエントリになります。

おまえ誰よ?

高橋征義と申します。プログラマです。プログラミングはかれこれ30年近くやってますが、まともに書けるようになったのは20年近くたってからです。人間続ければ何とかなることもあるんですね(ならないこともあります)。

修士の1年のとき、高校時代の友人から「インターネットのベンチャー会社作るんだけど一緒に働かない?」と言われ、あまり何も考えずに修了後その会社に参加しました。1996年、Webが流行り始めたころのことです。
そこから一度転職をはさみ、10年以上Web業界の隅っこの方で開発仕事に励んでいたのですが、昨年3月に退職、6月に電子書籍の制作と販売を行う「株式会社達人出版会」という会社を設立して、今はそこの代表取締役です。いやまあ社員は自分だけなんですけど。
その割には自社のサービスを書いたり、ぜんぜん関係ない他社のサイトを作ったりすることもあったりします。プログラミングのスキルは重宝しますね。

また、「日本Rubyの会」という、オブジェクト指向スクリプト言語Rubyのユーザと開発者を支援するための団体を作り、今までずっと会長をしています。いろいろあって、今度一般社団法人になる予定です。

「IT業界」って、なんだろう

この企画は、「IT業界にこれから入る新卒入社(から|へ)ブログエントリを書いてもらうという企画」というものなのですが、そもそも「IT業界」って何なんでしょうか。

私の好きなエッセイに、「5つの世界」というものがあります。これはジョエル・スポルスキー『Joel on Software』に収録されているもので、Webでも公開されています。もし読んだことがないのであれば、今すぐ読むべきでしょう。

読みましたか? 読まずにここを読んでいるなら、まず上のリンクを読んでから以下を読むことを強くお勧めします。

私が仕事で関わったものの中心は、5つのうちの「パッケージソフト」の変種の1つ、「商用Webベースソフトウェア」というものです。まあ「使い捨て」に近いというか、一品物のWebアプリケーション開発も多かったような気がします。仕事と関係ないところでは「オープンソースソフトウェア」もそれなりに知っています。それ以外、組み込みとかゲームとかインターナルとかはあまりよく知りません。もちろん知り合いとかでそちらに関わっている人もいるので、話を聞いたりはするのですが、何やら話を聞いても別の業界の話にしか聞こえません。余談ですが私の彼女もIT業界の人で、組み込みとかセキュリティの方に近いんですが、話を聞いてみてもやっぱりよく知らない世界の話のように聞こえたりします。

この5つの世界のどれをとっても、「IT業界ではない」と言うのはさすがにないでしょう。しかし、一つの業界としては「IT業界」というのは大変多様である、とは言えます。むしろ、単一の「IT業界」などというものはなく、「Web業界」や「SI業界」、「組込み業界」「ゲーム業界」などの複数のぜんぜん違う業界を、てきとーにくくったものを指す言葉だと思った方が、より現状に即しているのではないでしょうか。

さらに重要なことを書きましょう。「商用Webベースソフトウェア」の開発というのは、ほとんど10年程度しか歴史がありません。もちろん20世紀にもWebはありましたが、その頃はまだほとんどが手探りだったはずで、Webの特性を活かした開発手法が広く使われるようになったのはその後です。それ以前を含めたとしても、Web開発には十数年の歴史しかないわけです。しかしながら、今となってはIT業界を語る上で、Web開発を無視することは難しいのではないでしょうか。

これはどういう意味かというと、業界の状況は10年も経てば大きく変化し、それまでそもそも存在しなかったようなものが業界を左右するようにまで大きくなる(こともある)、ということです。言うまでもなく、あなたがふつうにIT業界の新人であれば、おそらくはあと30年以上仕事をすることになるわけで、そうするとあなたはこのような変化をこの先何度も体験しなければいけないことになるわけです。もちろんIT業界がこれから突然停滞期に入り、ぜんぜん変化しなくなる可能性もゼロではないですが、それはほとんど「業界の死」みたいなものであり、たぶん何十年も仕事をする価値はないでしょう(残存者利益の奪い合いみたいな世界です)。

つまり、あなたが今、あるいはもう少し未来も含めて、あなたが見ている「業界」に、あなたが何十年も居続けることはできない(可能であってもするべきではない)のです。

あるいは通時的な見方だけではなく、共時的にも考えてみましょう。そもそも現在のWeb業界だけでも広いものです。

例えば私がここ一ヶ月程度の間に入手した本を並べてみると、主だったものだけでも以下のようなものがありました(最後の1冊は献本いただいたものです。技術評論社の稲尾さん、どうもありがとうございます!)。

JavaScriptパターン ―優れたアプリケーションのための作法

JavaScriptパターン ―優れたアプリケーションのための作法

オンラインゲームを支える技術  ??壮大なプレイ空間の舞台裏 (WEB+DB PRESS plus)

オンラインゲームを支える技術  ??壮大なプレイ空間の舞台裏 (WEB+DB PRESS plus)

IAシンキング Web制作者・担当者のためのIA思考術

IAシンキング Web制作者・担当者のためのIA思考術

エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践)

エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践)

良いコードを書く技術 ?読みやすく保守しやすいプログラミング作法 (WEB+DB PRESS plus)

良いコードを書く技術 ?読みやすく保守しやすいプログラミング作法 (WEB+DB PRESS plus)

これらはどれもIT業界の一部の人には強くお勧めしたい、読む価値のある本だと思います。でも、これらを全部読むよ、とかいう奇特な人は、たぶん100人に1人もいません。ましてやこの調子で次から次へと出てくる書籍や情報を追いかけるなどというスタンスは、ほとんど現実的ではありません。要するに、IT業界のサブカテゴリであるWeb業界の、その「今」のスナップショットですら、あなたには追いかけきれなさそうなくらい、膨大な世界が広がっているわけです。

それではあなたや私たちはどうするべきか

ではどうすればいいのでしょうか。どうも他の方のエントリは率直で実践的なアドバイスを語られているようなのですが、私からはあまり気の利いたアドバイスを語れそうな気がしません。

ちょっと漠然としたことをあえて書くなら、あなたはこれから先、ずっと同じ「業界」の中で、同じ仕事をするわけにはいかないので、もうほとんど「違う業界」に行く覚悟を決めましょう、ということです。その「業界」では、あなたが覚えてきた知識や経験はあまり役に立たないかもしれません。でも、ITの世界では、それは避けられないものなのです。この企画を通して、他の方が勉強・学習について語っているのを多く見たかもしれませんが、それはIT業界の特徴が、そのように「変化」を本質として発展してきたためなのです。

さらに付け加えると、あなたはまだ存在しない、新しい「業界」を生み出し、育むべきなのです。IT業界に未来があるとするならば、そしてあなたがその未来においてもITの世界で仕事をし続けたいのであれば、あなた自身がその発展に関わらなければならなくなるでしょう。そのための備えは、今からでも早過ぎることはありません。健闘を祈ります。

まとめ

  • ジョエルのエッセイは面白いので他のも読むべきです。
  • 私もIT業界の一部しか知らないので、話半分に聞いてみてください。
  • Web業界はいろいろありますが、やっぱり好きな業界です。が、IT業界はそれ以外の世界がありすぎるので語りづらいです。
  • DDDこと『ドメイン駆動設計』本を最初から日本語で読めるみなさんがうらやましいです。
  • ちょっとまとめ方が難しいので、この「まとめ」は遊んでしまっています。すみません。
  • でも、みなさんの活躍には、心から期待しています。たのしい未来に向けて、一緒にがんばりましょう。

おすすめの本

ここまで読んでいただければだいたい勘づいているかと思いますが、私はわりとコンピュータ書やその他の関連した本をたくさん読む方なので、勧めたい本を書き出すと何冊あっても足りません。
が、あえて1冊だけ、これからIT業界で生きていく人に勧めるのであれば、『Code Complete第2版』を勧めてみたいと思います。

CODE COMPLETE 第2版 上 完全なプログラミングを目指して

CODE COMPLETE 第2版 上 完全なプログラミングを目指して

CODE COMPLETE 第2版 下 完全なプログラミングを目指して

CODE COMPLETE 第2版 下 完全なプログラミングを目指して

『Code Complete』は「コンストラクション」の本です。この「コンストラクション」は本書独特な言い回しで、要するに広い意味での「プログラミング」の本、と言えばいいでしょうか。「広い意味で」と書いたのは、例えば設計的な要素も含むためで、これはそういうことも含めてプログラミングである、というのが著者の主張が含まれていると思います。

IT業界と言ってもデザイナーやプロデューサー的な方もいるわけで、そういう人にはあまり役に立たないかもしれませんが、「ソフトウェア開発」に関わる人であれば、あなたの職種が「プログラマ」というものではなくても、やはりプログラミングについては一通り知っておくべきことだと思います。そしてそのプログラミングについて、名前のつけ方からコードの書き方、デバッグの仕方についてまで、とにかく一通り、網羅的に説明しつくした本としては本書が現時点でのベストではないかと思うわけです。

次は

id:kawa1128 さんです。よろしくお願いします。