プログラマーのキャリアは、浮き沈みに満ちた興味深い経験です。その急峻な学習曲線を考えれば、挫折、啓発、思い上がりといった時期と、その合間に訪れるさまざまな心の動きを経験することは十分に予測できます。この記事では少し息抜きをして、面白いGIF画像の数々を通して、その各段階を振り返ってみましょう。
ステージ1-ルーキー

仕事を始めたばかりの頃は、誰もが情熱に満ちあふれています。この時期、あなたはまったく見当がつかず、何をすべきかさえ分かりません。まるで水から出た魚のように、コードの1行1行が謎です。Doctype?は?ちくしょう、この<div>は一体何のためにあるんだ?最初の段階は、怖くて、不安で、それでいて胸が高鳴ります。一体全体、いくつの言語を学べばいいんだ?
しかし、あなたの最大の強みは、水がどれほど深いかを知らないことかもしれません。(訳注:原文は"you have no idea how deep the rabbit hole goes"。この典故は『不思議の国のアリス』でアリスが底なしのウサギ穴に落ちる場面に由来します)。HTMLを学ぶことは、ほんの一歩前進に過ぎません。
ステージ2-スタート

多少の労力はかかりましたが、最終的にあなたは十分な知識を身につけ、プログラミングの世界への第一歩を踏み出しました。第1段階が完全に「どうすればいいんだ?どこから始めればいいんだ?」という右も左も分からない状態だったのに対し、第2段階ではゆっくりと自分のスキル体系を築き始めています。もちろん、CSSでスタイルを定義する構文はまだ馴染みがありませんが、少なくとも購入したばかりのコードエディタでコードを変更し、ブラウザでその変更結果を確認できるようになりました。それは本当に素晴らしい感覚です!
ステージ3-極度の落ち込み

洞窟で迷子になり、懐中電灯でそれぞれのトンネルを照らしながら出口を探すところを想像してみてください。一歩進むごとに、かすかな光を期待します。残念ながら、この業界の学習曲線は非常に急峻です。申し訳ありませんが、そのかすかな光は長くは続かないでしょう。この段階で何百時間も費やす覚悟が必要です。気が狂いそうなものが何を意味するのかを必死に解明しようとしている間、あなたは技術書を何度も何度も読み続けなければなりません。
落ち込みが強すぎて耐えられないと感じたら、気持ちを落ち着けて、私たち一人ひとりがキャリアのどこかの段階で同じような気持ちを味わったことを思い出してください。あなたは一人で戦っているわけではありません。粘り強く続ければ、すぐに「悟り」の段階に到達するでしょう。
ステージ4-悟りの瞬間

「悟り」の瞬間は、世界で最も素晴らしい感覚のひとつです。一瞬のうちに、突然、「できた!」「おおお、やっとわかった!」となるのです。私自身の例で言えば、プログラミングにおける大きな突破口は、たいてい他の人々が眠っている夜に訪れます。コードを8回読んだ後、以前はまったく理解できなかった箇所が、少なくとも少しははっきりし始めるのです。
この段階では、あなたが学んだすべての技術と言語が役立ち始めます。
ステージ5-脆いコード

前の段階と同様に、「脆さ」の段階もかなり長く続きます。この段階では、アプリケーションの構築に成功し、意図した結果を達成できますが、基盤となるコードは、顧客の要件が突然変更されたときに対応できません(At this point, you are successfully building applications and achieving your desired end result, but the underlying code is one client feature-request away from popping。訳注:but 以降の後半は翻訳しにくいので、腕に覚えのある方の助けを求めます。)。この時点で、あなたが書くメソッドは数十行に及び、テストという概念はまだ頭の中にありません。
しかし、少なくとも実際に動くものを作っています。当面は、GitHubでのプルリクエストをドキュメントの作成やスペルミスの修正に限定してください。これらの作業が他の人にもたらす助けを過小評価してはいけません。
ステージ6-模倣

模倣の段階は重要です。あなたが尊敬する達人が書いたコードを模倣すること——彼らのコードを1行ずつコピーすることさえ——は、適切なプログラミング手法を学ぶための最良の方法です。落ち込まないでください。芸術的な要素を持つあらゆるキャリアには、模倣の段階がつきものです。幸いなことに、GitHubはこうした静かな崇拝をかつてないほど容易にしました。もちろん、コードをコピーすることで得られるものには限りがありますが、それは良い出発点になります。あなたを触発してくれる人を模倣し、やがてあなた自身のスタイルを形成し始めるでしょう。
ステージ7-思い上がり
この時点で、あなたはようやく次のような境地に陥り始めます。もちろん改善の余地はまだ大きく残っていますが、自信も急速に膨らんでいます——おそらく早すぎるほどに!よく言われるように、最初の数年は、自分がどれほど無知であるかを認識できるほどにはまだ至っていません!
この段階では、衝動的に傲慢にならないようにしましょう。傲慢さは誰にとっても良いことはありません。将来のより優れた自分が過去を振り返って首を振るだけです。GitHub、Reddit、StackOverflowで「おい、プログラミングの勉強ぐらいしろよ」といった嘲笑的なコメントを残したくなったときは、絶対にやめてください。つい先日まで、あなた自身も完全なルーキーだったのです。他人を貶めるのではなく、ポジティブなエネルギーを伝えてください。私たちは同じ戦線に立っており、ただ異なる段階にいるだけなのです。
ステージ8-Vimを学ぶ

一緒に働く開発者がコードエディタで操作する速さに驚いたことがあるなら、その人はVimを使っているかもしれません。Vimの学習曲線は非常に急峻ですが、一度習得してしまえば、あなたのワークフローは見ている人にとって魔法のように見えるでしょう。
これは、プログラミングスキルとワークフローをコントロールし始める段階であり、適切なツールは技術と同じくらい重要です。
ステージ9-コードが芸術になるとき

何千時間もかかるかもしれませんが、いつかあなたは自分のコードを見て、コマンドラインを操作するかのように簡単に読み解けることに気づき、それがまるで芸術品のようだと悟る日が来ます。あなたのコードにはバージョン管理があり、優れた抽象化、完璧なテスト容易性、スケーラビリティがあり、そして読みやすいのです。キャリアのどこかの段階で、神秘ので人を困惑させるけれども正常に動作するコードを書ける自分に酔いしれたことがあるかもしれません。しかし、プログラミング言語のあらゆるテクニックや隠れた機能を駆使したり、単に自分の賢さを誇示するために複雑なロジックを1行に凝縮したりすることは、成熟した開発者の証ではありません。むしろ、将来のコードの保守者をまったく考慮しない、思い上がった開発者の姿を示しているのです。
コードの可読性が、それが実現する機能と同じくらい重要になったとき、コードは芸術になります。この段階に達すると、あなたは機械のためではなく、人間のためにコードを書いているのです。
ステージ10-経験豊富

プログラミングが本能になると、キャリアの次の段階に到達します。この時点で、あなたはもはや言語やフレームワークのレベルで考えるのではなく、単に問題を発見し、開発ツールボックスから適切なツールを選んでソリューションを提供します。経験豊富な開発者は、西部劇のカウボーイ式の単独行動がめったに正しい道ではないことを理解しています。プロジェクトチームの全メンバーと新しい機能のひとつひとつを話し合い、ホワイトボードを準備し、ストーリーを書き(訳注:story)、テストを生成することは、実際のコードの最初の1行を書き始める前に行う作業です。
ここに至って、あなたは成熟し、思慮深く、誰もが一緒に働きたいと思う開発者になりました。おめでとうございます!
ステージ11-ロックスター

この段階に到達できる人はほとんどいません。ロックスターの段階はキャリアの頂点です。日常業務に加えて、あなたは頻繁にセミナーで講演し、数え切れないほどのオープンソースプロジェクトの背後にあるリーダーとなります。メーリングリストを通じてWebの未来の発展に参加し貢献する時間を作り、同時にIRCで新人を助けます。あなたはコンパイラやパーサーを書くことを楽しむタイプの人間です。
他の人々はあなたをロックスターやニンジャと呼びますが、あなたはそうしたレッテルを嫌います。あなたは誰よりもよく分かっているのです——学びに終わりはないということを!
出典:http://blog.jobbole.com/56252/