週末料理をしていて足を切ってしまいました。agoです。
以前Perlは書いていたんですが、その頃以下の記事を読んで非常に感銘を受けました。
Perlプログラマのレベル10 - Perlプログラミング救命病棟より - naoyaのはてなダイアリー
当時あまりコミュニティとのつきあいがなかったので、「自分のスキルの絶対位置」、「次のレベルへ行くために必要なもの」を知ることで非常に安心感を感じた記憶があります。
いま確認したところ、「JavaScriptプログラマのレベル10」はないようなので書いてみました。
- Perlプログラマ
- Schemeプログラマ
- Rubyプログラマ (本家に直接リンクできるURLが無かったため、参照ページへリンクしています)
- haskellプログラマ
- 堕落したCプログラマ
- HTML知識レベル
- プログラマレベル
- 企業法務
- JavaScriptの業務スキルレベル 判別表 (5段階)
- FPGAプログラマ
- C++プログラマ
- Vim使い
レベル0 : JavaScriptがプログラミング言語だと言うことは知っているが、JavaとJavaScriptの区別が付かない。 (Webプログラマの自己紹介を聞いて)「Javaやってるんだ?」
レベル1 : 「JS」がJavaScriptの略称であることを知っている。JavaScriptはWeb Siteを作成するための言語と理解しており、alertやチカチカしたものはJavaScriptで作られたと思っている。自分でコードを記述することは出来ないが、Dreamweaver等が埋め込んだコードを壊すことなくhtmlを編集することが出来る。 (何度も出るalertを見て)「またJavaScriptか!」
レベル2 : 広く公開されているライブラリを自分のサイトへ組み込むことが出来る。各ライブラリには相性があることを理解しており、あるライブラリとあるライブラリが衝突することは知っているがどういう条件で衝突するかは知らない。ライブラリの呼び出し部分に関してサンプルコードを修正し、自分のサイトに合わせたid、class名に変更することが出来る。 「カチカチカチ」(「xxするためのライブラリまとめ100」とかをブックマークしている)
レベル3 : 変数、条件分岐、ループを理解しており、簡単なコードであれば0から記述することが出来る。デザインとロジックの分離は出来ないが、ブラウザのuser agentで切り分けることでクロスブラウザのコードを記述することが出来る。公開されているライブラリに埋め込まれているhtml部分を好きな形へ書き換えることが出来る。 (次の仕事の仕様説明を聞いて)「そこもJavaScriptつかうんですか!?」
レベル4 : 自作のライブラリ群に限界を感じ、jQuery、Prototype.js等に手を出す。簡単なアニメーションを行うことが出来、デザインとロジックの分離を行うことができる。firebugがないとデバッグする気が起きない。GreaseMonkey等のUserScriptを作成し、既存のサイトを修正する事が出来る。 (ユーザから「動かない」と呼ばれて)「ごめん。まずfirebug入れていい?」
レベル5 : 正規表現、再帰、無名関数を使いこなせる。jQuery、Prototype.js等の普段使用しているライブラリに沿った記述が可能になる。.prototypeを使用して既存のオブジェクトを拡張することが出来る。コードを記述するときに速度をきにしだす。普段からlocal proxyが起動している。 (IEだけ非常に遅いのを見て)「IE爆発しろ!」
レベル6 : this, .apply, instanceOf等の効果を他人に説明することが出来る。各種外部APIを連動させてJavaScript単体では出来なかったことを実現する。JavaScriptではサポートされていない機能を実装するためにJavaScriptから呼び出されるだけのswfを作成したことがある。速度的な問題から各要素に直接イベントを設定するのではなく、上位要素にイベントを設定し独自のディスパッチャでイベントの処理を行う。 (Yahoo! pipesを使って)「Yahoo! いいじゃん!」
レベル7 : 各ブラウザが独自実装している機能に関して、共通部分を抜き出してライブラリ化する。HTML5を試してみる。profileでいくつかのコードをテストし、一番早いものを採用する。速度的な問題から、あえてライブラリを使用しない。 (できあがったコードを見て)「半分がIE対策か。。。」
レベル8 : JavaScriptでDSLを作成する。ブラウザのextensionを作成し、addons.mozilla.org等で公開する。広く公開されているライブラリに限界を感じ自作することを思い立つ。カンファレンス、勉強会等でLightning Talkを行う。 (Lightning Talkにて)「どうもxxのnnです」
レベル9 : サーバサイドJavaScriptに手を出す。カンファレンスにスピーカーとして呼ばれる。JavaScriptの仕様に限界を感じ、仕様を変更できないか考える。作ったライブラリが広く使われるようになるが、本人のやる気がついてこらず放置気味になる。 (自作ライブラリへの問い合わせに対して)「次のバージョンでは修正予定です!(いつ出るかわからないけど)」
レベル10 : JavaScriptの実装を開発している。次世代のECMAScriptに関しての提言が受け入れられる。自作したライブラリがOSやブラウザ等の実行環境に標準で取り入れられる。JavaScriptに関する書籍を出版し、コミュニティから「バイブル」と呼ばれ読書会が開かれる。 (始めてあった人から)「もしかしてnnさんじゃないですか?はじめまして!いつもお世話になっています!」
各レベル内容はどれか一つでも当てはまればクリアと想定しています。
ただ、内容はかなり偏っていると思うので、皆さん独自の「レベル10」を作ってみてください。
(2010/08/11 リンクを追加しました)