段階一:自分が知らないことを知らない(Unconscious incompetence)

大学時代、私は先生と一緒にいくつかの小さなプロジェクトを行い、自分がとてもすごいと思っていました。当時、いくつかの会社に面接に行ってアルバイトをしようとしましたが、なぜ返事が来ないのか分かりませんでした。その頃の私は、自分が知らないことをまったく知らず、自分は多くのことを知っていると思っていました。今思うと笑ってしまいます。あの頃はまだプログラマーとは言えず、せいぜい趣味のプログラミング愛好家程度でした。

特徴:偽りの自信、過剰な約束、口を開けば「できる、問題ない」、他のプログラマーを見下す…など。

段階二:自分が知らないことを知っている(Conscious incompetence)

就職後、プロジェクトで仕事をする際に困難に直面し、どう解決すればいいか分からないことに気づきました。周りの人と比べて自分の知識が不足していることを発見し、自分のスキルが及ばないことを知りました。多くの点で足りていないため、しっかり学ぶ必要があります。この時期はいわゆる初級プログラマーの段階であり、他人の指導に頼らなければなりません。

特徴:少し自信がない、謙虚に学ぶ、こっそり努力する、すごい人を羨む…

段階三:自分が知っていることを知っている(Conscious competence)

仕事を3、4年続けると、スキルが徐々に向上し、プロジェクトチームの技術エキスパートになりました。この頃は自信もあり、直面するすべての問題を解決できると分かっています。これが上級プログラマーの段階です。

特徴:自信がある、比較的客観的、真摯に約束する、やや自己中心的…

段階四:自分が知っていることを知らない(Unconscious competence)

長年仕事をしてきた後、知識の深さと広さが増すにつれて、学べば学ぶほど分からないことが増えていることに気づきます。時には、以前は本当に多くの時間を無駄にしたと感じることもあります。まだまだ向上すべき点は多いと思いつつも、仕事で直面する問題で解決できないものはほとんどありません。この時期には多くの知識が体系化され、問題解決にも独自の潜在意識が働くようになり、時には自分が知っていることすら気づかないこともあります。この段階はアーキテクトレベルです。

特徴:オープン、積極的、好学、謙虚…