レベル1 初能力者
プログラムを始めたばかり。
本やサンプルを見ながら、他人が作ったプログラムの修正が加えられる。
レベル2 能力者
プログラムを初めて、数年。
100行~1000行程度のプログラムが自作できる。
数個のクラス、数個の関数を自作することができる。
レベル3 強能力者
プログラムを初めて、10年が見えてくる。以下3つが全てできる
1万行以上のプログラムを破綻なく作ることができる。
書いたプログラムをレベル1・2の人がメンテナンスできる程度に設計できる。
(レベル1がメンテナンスできない破綻したコードを1万行書くのはレベル2)
1万行以上のマルチスレッドやマルチタスクを破綻なく書くことができる。
(実際に書いたら、頻繁に落ちてどこでおちるかトレースもできない破綻するコードを書くのはレベル2。また実行速度が著しく遅いなどの破綻もない事)
自分の専攻分野があり、専攻分野であれば本を読みながらであれば大抵のものが組める。
たとえば、仕様書がきちんと書かれていれば、動画の圧縮CODECが作れる。(つまり、基礎とするフーリエ級数展開などをアルゴリズムにできる。)
レベル4 大能力者
プログラム歴20-30年程度
システム側が間違っているときに、システム側を修正できる。
たとえば、コンパイラにバグがある際に、コンパイラを修正し適切にメーカー・コミュニティーに連絡を取りコードをマージまでもっていける。
PHP,Perlなどのインタプリタに問題があった場合、インタプリタを修正し、適切に同上の対処ができる。
Linuxなどのカーネルに問題があった場合、適切に修正し、適切に同上の対処ができる。
など、アプリ使い、でななく、使っているシステムそのものの、システム側までも含め修正できる。
この場合のシステム側は、自分の専攻しているという制限要件を付けない。仕事などで依頼されたシステムを解析し必要に応じて上記の動作ができること。初見のシステムであっても、適切な調査期間をとって自分の物に出来るのがレベル4、専攻システムのみに深い知識があるのがレベル3
数人のレベル3を使い、10~100万行以上のシステムを破綻なくリードし、設計『させる』ことができる。
レベル5 魔術師
プログラム歴30年以上
システムそのもののフルスクラッチ設計ができる。
たとえば、1からカーネルを設計し、プロトコルスタックを設計し、コンパイラを設計し、各種基本アプリを設計し、GUIを設計することがすべてひとりででき、また、レベル4などに、設計『させる』ことができる。(各分野に対して基礎知識は十分、応用知識もある程度あり、補足として書籍などを使える事)
もちろん、単一システムだけではなく、サーバー・クライアント双方の設計ができる。
また、ソフトウェア単体にとどまらず、ハードウェアーキテクチャーにも詳しく、プロトコルスタック単体をとっても、イーサーネット・ケーブル通信・無線通信(3Gなど)各レイヤーの知識があり、適切にソフトウェアを組み上げられる。それをCPUレイヤー、アプリレイヤーすべてのレイヤーについて行える。
また、コンピューターサイエンスの分野に留まらず、GUIであれば、デザインに知識があり、プログラムに必要なデザインをデザイナーと調整できる。最低限のラフデザインは自分でできる。効果音やBGMであれば、音楽に知識があり、プログラムに必要な音をサウンドクリエイターと調整できる。最低限の音作りは自分でできる。
要するに、iPhoneなどのハードからソフト・サーバーまでの複合ソフトウェアをハード込み込みでひとりで作れ、かつ、複数のチーム・メンバーを率いて、適切に作業分担できるだけの能力をあわせ持つ。合議で複数の能力を発揮するのではなく、リーダーがすべての能力を持ち、リーダーシップで率いるチームを創ることができる。
能力がソフトウェアにとどまっているのが、レベル4。長年の共同作業により知識がハード、絵、音などに飛び火し、自分の物にしたのがレベル5。ただしあくまでもプログラムを作るために、他の能力が付随してある形。器用貧乏ではレベル4
レベル6
プログラマ歴50-80年以上?
プログラムに必要な、あらゆることを執行することができる。
必要であれば、政治、経営、あらゆる分野の知識を総動員し、プログラムを組み上げるために起こる、あらゆる問題を解決する。
必要であれば、プログラムのために、法律を変え、プログラムのために、経営を変え、プログラムのために資金を調達し、プログラムのために国家を起こし、プログラムのためにありとあらゆることを実行できる。
その他の用語
プログラム能力がレベル2程度あるが、それ以上伸びず、営業方面を伸ばした=SE
プログラム能力がなく、営業方面を伸ばした=SI
プログラムという意味には、商品全体をプログラムしていく社会システムをプログラムする、など、あらゆる意味を持たせることが可能したがって、プログラマはどこまでいっても、プログラマである。
元ネタ
現代プログラマのレベル分け ≪ Sazameki Lab