週末料理をしていて足を切ってしまいました。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 リンクを追加しました)