これからのソフトウェア開発

今日、とあるセミナーに出てきた。
その中でいろいろと思うことがあったので、
そのへんをつらつら書いていく。
ただ、まとまるとは思ってないので、
尻切れだったらごめんなさい。


まず、現状のデファクトスタンダードはなんだろう。
んーやっぱJavaかな。.NET?
Javaってことにしておこう。
まだ、OSSがそこを源流に開発されていることをみれば、
Javaってことになると思っていいだろうか。


さて、そうは言っても、今ソフトウェア業界は過渡期だと
私は思っている。
今後、BtoB or BtoCの時代から、CtoCの時代になってくる。
もう既にそうなってきていると感じている人も少なくないだろう。

一人一人がアイデンティティ(個性)を確立し、電子化が進む。
つまり、個人が個人としてブランドを持ち、それをインターネットを介して提供してゆく。
それが、今後のビジネスの本筋になるだろう。
そのアイデンティティは何であれ、ネットとのインターフェイスがどうしても必要になる。
インターフェイスの進化は非常に速く、
既にHTTPのRequest-Responceだけで成り立つインターフェイスはもう使い古された物になってきている。
顧客は使い易さとカッコイイデザインを求めだし、
Ajaxリッチコンテンツに火がつきつつある。
今後も、この流れは早まり、新しい技術が作られは消えてゆく。
そんな中我々は何を学び何を切捨てるかを短期間で判断する必要が出てくる。


開発者として言うなら、保守性を保ちつつ、
スピードを如何に上げるかに注力しなければならなくなるだろう。
そのために必要なことは、生涯教育と、少数精鋭での開発。
そして、新しいことに挑戦し、常に柔軟に考えを変えてゆくこと。


少数精鋭がキーワードだと私は感じている。
スピードを上げるためにいちばんやってはならないこと。
それが人の追加だ。
最低限の精鋭でビジネスを形にしてゆく、
そして、限りなく速くβ版をリリースし、
一定期間のうちに進化させてゆく開発がこれからの主流になる。
1ヶ月が命取りになる今後は、アイデアの有効期限が非常に短い。
そのアイデアを最低限の機能で実装し、公開する。
そして、フィードバックを得ながら進化させる。
mixiyoutubeなどを見ればその開発手法が垣間見える。
それはまさにここに書いた通りじゃないだろうか?


さて、言語の話に戻ろう。
今後、プログラミング言語仕様からAgileを意識したものが出てくるかもしれない。
言語自体に、O/Rがついてるものとかね。
まぁ、これは妄想だけど。
フィードバックを受け手修正を施していく上で、Javaを使う利点はなんだろう。
私が思い付くのは、Eclipseでのすんばらしいコードアシストと即時コンパイルくらい。
OSSは既に各言語で同じようなものが出ているので、さほどアドバンテージがあるとは思えない。
最大の欠点は、デプロイがあること。
HotDeployでどこまでできるのか見どころだが、
LL言語と同じとまではいかないだろう。
LL言語は、IDEで作っていても静的なチェックが甘いので、
ちょっとしたミスが多くなる事が欠点になるが、
サイト更新が手軽に出来るのが素晴らしく良い。


少数精鋭を前提にすれば、LL言語の欠点は限りなく小さくなる。


今後、少数精鋭で短期間開発が増えてくる中、
新人はどうなってゆくのだろう。
未だ企業は、何も知らない素人をソフト業界に引き込んでいる。
新人は目を回しながら教育とは言えないような社内教育を終え、OJTという名のもとでこき使われることになる。


私はOJTで通用する時代はオブジェクト指向が出てきた時点で終わったと思っている。
今後は、しっかりと教育を受け、一通りの事がこなせないと、面白く、エキサイティングなプロジェクトには参加すら出来ない。
そこを如何にサポート出来るかが今後の私の課題だなとそう思っている。


新しいことを積極的に採り入れることをまずはやってみようと考えている。