【 ここから本文 】
- TOP
- > Topics : キャリアアップ
- >
キャリアアップ
ソーシャルブックマークに登録 :
印刷用ページの表示
【連載】
新時代のITキャリア【システム開発編】
第6回 「上流プログラマー」
(2007年06月01日)
IT業界では常に新しい技術が誕生している。そしてそれに伴いさまざまな職種や役職が誕生している。本連載では、IT業界の職種を取り上げ、その仕事内容や必要とされる能力、労働条件や待遇といったものを紹介していくことにしたい。今回は前回から一歩進んで「上流プログラマー」を取り上げる。前回の「下流プログラマー」と何が違うのか、しっかりと把握してほしい。
横山哲也
グローバル ナレッジ ネットワーク、マイクロソフトMVP
【職務概要】
前回も触れたとおり、IT業界ではコンピュータのハードウェアに近い方を「下流」、ビジネスに近い方を「上流」と呼ぶ。そして、上流工程で作成される仕様書は、「ビジネス要求を指定した文書」という意味で「要求仕様書」と呼ばれている。
上流プログラマーの仕事は、要求仕様書で要求された機能をどうやって実現するかを考え、どのような技術を使って実装するかを考えることである。
その結果は「詳細仕様書」としてまとめられ、下流プログラマーに渡される。つまり、上流プログラマーは、ビジネス要件をまとめた仕様書と、実際に動作するプログラムの“ギャップ”を埋めるのが主な職務である。詳細仕様は次回取り上げるシステム・エンジニア(SE)が作成することもあるが、その場合でも上流プログラマーの協力は不可欠だ。
【存在意義】
上流プログラマーは、下流プログラマーに比べて仕事の自由度が高い。上流プログラマーの判断次第でプロジェクトの成否が決まることも珍しくない。
上流プログラマーに渡される要求仕様書は、ビジネスを実現するものである。そのため、IT技術に関する具体的な内容や、利用可能なハードウェア要件などは指定されていないのが普通だ。
上流プログラマーは、要求仕様書に従って最適な手法や技術を選択しなければならない。そこが“腕の見せ所”となるのだ。不適切なデータ構造やアルゴリズムを選択してしまうと10倍から100倍の性能差が出ることも珍しくない。いくらコンピュータの性能が向上したとはいえ、100倍の差を埋めるのは難しい。
例えば、データの並べ替え(ソート)を行う必要があるとしよう。ソートは与えられたデータの性質によって、最適なアルゴリズムが異なる。例えば、クイックソートは高速で広く使われているが、すでにソート済みのデータに対して再ソートを行えば、他のソート・アルゴリズムよりも遅くなってしまう。よく考えず、何にでもクイックソートを使うようでは上流プログラマー失格である。
【必要な経験/スキル】
上流プログラマーは、複数の技術の中から最適なものを選択することが求められる。そのため、下流プログラマーのスキルを持つことは不可欠だ。ただし、現在では上流と下流の区別があいまいになっており、「(自分には)下流プログラマーのスキルはありません」と言う上流プログラマーは皆無と言ってよい。
上流プログラマーはIT技術全般に広く精通しているだけでなく、以下のようなスキルや知識も必要だ。
- 古典的なIT技術の知識 1970年代には多くのアルゴリズムが提案され、今でも広く使われているものが多い。メモリやディスク容量が潤沢に使える現代では適切とは言えない技術もあるが、知識としては知っておくべきである。
- 最新のIT技術の知識 Webサービスやグリッド・コンピューティングなどの新しい技術についても概要を理解し、その動向を知っておく必要がある。
- 論理的思考能力 要求仕様書を読んで理解する能力は、下流プログラマー以上に重要である。
- 読解力と文章力 要求仕様書を読み取り、詳細仕様書に落とし込むのはSEと上流プログラマーの仕事である。
【適した人材】
下流プログラマーと同様、第1に論理的な思考ができる人材。特に自分の考えを文章で表現できる能力は不可欠である。また、下流プログラマーとSEの中間に位置するため、上下関係を含むコミュニケーション能力も重要な要素となる。
【雇用側が求めるべき能力】
適切な技術を正しく選択し、高いコスト意識を持てる人材。CPUの速度もディスク容量も有限である。技術的な優位性だけではなく、コストを意識し、システムの規模に見合ったプログラムを作成する能力も必要となる。
【採用の決め手となる“究極の質問”】
「自分でゲーム(またはパズル)を解くプログラムを作ったことがありますか、または作ろうとしたことがありますか」
気に入ったゲームがあったときに、それを解くプログラムを作ってみようと思う人は上流プログラマー向きである。三目並べでも、クロスワード・パズルでも、何でもいい。単なるじゃんけんゲームでも構わない。
また、下流プログラマーで紹介した「数独」であれば、「自分で数独を解くプログラムを作ったことが(または作ろうとしたことが)ありますか」という質問でもいいだろう。「数独が好き」というレベルの人は下流プログラマー、さらに一歩踏み込んで「数独を自動的に解くプログラムを作ってみよう」と思うレベルの人は上流プログラマー向きである。
ただし、チェスや将棋となると、実際に作るのはかなり難しい。完成させなくてもかまわない。作ってみたいと思ったかどうかが重要なのだ。
【年収】
下流プログラマーよりは上だが、それほど高くない。高い年収を目指すなら、さらに上流工程のエンジニアへの転身を図りたい。ただし、下流プログラマーよりも長く仕事を続けられるので、技術者気質の人はこのレベルにとどまることも多い。
【謝辞】本稿を記述するにあたり、元プログラマーの鈴木和久氏(グローバル ナレッジ ネットワーク)に協力をいただいた。
- 新時代のITキャリア【システム開発編】
- 第1回 「オフショア・プロジェクト・マネジャー」
- 第2回 「ベンダー・マネジャー」
- 第3回 「BIアナリスト」
- 第4回 「IT財務責任者」
- 第5回 「下流プログラマー」
- 第6回 「上流プログラマー」
- 第7回 「システム・エンジニア」
- 第8回 「プロジェクト・マネジャー」
- 第9回 「アーキテクト」
- 第10回 「ヘルプデスク」
- 第11回 「テクニカル・サポート」
- 第12回 「システム管理者」
- 第13回 「ネットワーク管理者」
- 第14回 「一般ユーザー・トレーナー」
- 第15回 「ITプロ/開発者向けトレーナー」
- 第16回 「ITコンサルタント」
- 第17回 「CIO(Chief Information Officer)」
- 第18回 「CSA(Chief Software Architect)」



















