ボーダーレスな開発の時代

昔のソフトウェア開発なら、いわゆる業務系、ウェブ系、組み込み系といったカテゴリがあって、開発者はいずれかのカテゴリに属しているのが普通だったし、各々の技術者では前提となる知識が異なっていたので話が通じないことも多かった。同じ開発言語を使っていても作る対象や作り方は大きく異なっていたし、隣のカテゴリの仕組みなんて何も知らなくても全然問題が無かった。

でも、単独の製品やサービスだけでは、生き残ることががだんだんと難しい時代になってきている。ちょっとした組み込み製品でもネットワークに接続出来ることが当たり前だし、単独システムだけではビジネスとして成り立たず他のサービスとの連携が当たり前になりつつある。「ソリューション展開」などと称してシステム一式を商売にしようとしている企業が多い状況を見ていると、ビジネスの重心が変わりつつあるような感覚すらある。

このように、各システムがシームレスに結合することが求められる時代になってくると、開発者は自分の担当外だから知らないという言い訳が出来なくなるし、隣の分野についてもある程度の知識が必要になってくる。さらに相互にシステムを繋げるためには、隣のシステムに関しても一緒に併せて作ることが必要になってきたりする。

例えば、iPhoneやAndoridのソフトウェア開発は、従来の枠組みから言えば組み込み系に属するはずだけど、実際に開発する上ではハードウェアに近いレベルの知識なんてほとんど必要としないので、PC上で稼働する業務系のソフトを作るレベルと大して変わらない。それどころか、ウェブサーバと何らかのやり取りを行う仕組みを持つソフトも多いので、サーバやネットワーク、インタフェースに関する知識も必要不可欠になってくる。

こうなると、今までのような「サーバ側の担当者とクライアント側の担当者が、互いの情報を交換しながら相互接続のインタフェースを開発を進める」スタイルよりも、「サーバ側とクライアント側の両方を分かる開発者が少数で作った方が手っ取り早い」という状況が増えて来る。

もちろん、「データベースのパフォーマンスがボトルネックになっているから、問題を解決出来る専門家が欲しい」というニーズは確実に存在するわけで、それは従来通り必要なのだけど、ビジネスを前面にグイグイと推し進めるタイプの開発者とは少し違うように思う。

そんな訳で今日の結論。上から下までの仕組みを理解していて、自分で一通り作れるスキルはかなり有利だと思います。



関連