レベル1 初心者 [ソフトウェア・スキル・インデックス]
「ソフトウェア・スキル・インデックス」では、7つのレベルを定義しています。その中で、レベル1である初心者は、次のように定義しています。
ソフトウェア開発を行うには、プログラミングの基礎知識や、コンピュータに関する基礎知識が不足している拙著『プログラマー”まだまだ”現役続行』では、次のように解説しています。
レベル1:初心者この解説を読み返してみると、初心者には次のことを最初の一年で教え込まないと、次のレベル2にはなれません。
今日、ソフトウェア業界に就職する若手のほとんどが、このレベルだと思います。コンピュータの動作原理の理解や基礎知識がなく、プログラミングの基礎知識や経験がなかったりします。
このレベルでは、しっかりと基礎知識を身につける必要があります。単に、与えられた簡単な仕事をこなせるだけの知識を修得するだけでも、初級職人や中級職人まではなれるかもしれませんが、それ以上を目指すとなると、コンピュータの基礎もマスターしておく必要があります。
それと、もう一つ忘れてはならないのは、プログラムは動作すればよいというものではなく、人が理解できる読みやすいコードを書く必要があることです。その重要性をしっかり学習しておく必要があります。
初心者レベルでは、業務で使用するプログラミング言語をきちんと学習するだけでなく、コンピュータのハードウェアの基礎知識、およびデータ構造とアルゴリズムをきちんと学習しておく必要があります。
しかし、多くの職場では、プログラミング言語は、使用する機能だけという表面的な学習だけで、きちんと言語を学習しないことが多いのではないかと思います。それに加えて、データ構造とアルゴリズムの基礎を学習しないまま、ソフトウェア開発を行っている人が多いと思います。その結果、ソフトウェア開発の経験年数がかなりあっても、たとえばハッシュテーブルやO表記といわれてもまったく理解していなかったりします。
そして、初級職人の域を出ないレベルのまま年数を経ているため、組織上は開発グループのリーダーをやったりしていますが、中級職人や上級職人になることなく、中途半端な状態で年を重ねていたりします。
初心者に対して、プログラミング言語、ハードウェアの知識、データ構造とアルゴリズムを教えるには、「本を読んで勉強しなさい」といっても無理があり、かなり強制的に学習させる必要があります。
一方で、初心者は書かれたプログラムを動作させるだけで精一杯かもしれませんが、それでも、業務で開発させるソフトウェアは読みやすくなければなりません。したがって、プログラムが読みやすく書かれているかどうかは、常にチェックして、指導していく必要があります。そのために、しっかりとした中級職人以上のソフトウェアエンジニアが、直接教育や指導を行う必要があります。
初心者自身は、自分を指導する人が、きちんと指導してくれるレベルの人なのかどうかを判断することはできません。初心者の教育やOJTには、継続した学習を行っていて、読みやすいコードを書くことに常に注意を払っている先輩を担当させる必要があります。逆に、経験年数は長いけれど、普段まったく学習もせずに、きたないコードを書いているような人に、初心者の教育やOJTを担当させないようにしなければなりません。
間違ってこのような人をトレーナーとしてしまうと、初心者はいい加減な知識のまま、本人は仕事をこなせるようになったと錯覚するだけで、たかだか中級職人の域で止まってしまう可能性があります。
初心者レベルは、まったくのプログラミングの初心者ならば、就職してから半年から一年ぐらいだと思います。
『プログラマー”まだまだ”現役続行』(p.38)
- 1つのプログラミング言語をきちんと学ばせる
- コンピュータの基礎(ハードウェア、OSの仕組み、データ構造とアルゴリズム)を学ばせる
- 読みやすいコードを書くことを徹底させる
- 1つのプログラミング言語をきちんと学ぶとは、たとえば、Java言語であれば『プログラミング言語Java第4版』と『Effective Java 第2版』を学習させることです(「プログラミン言語Java教育」)。
- ハードウェアに関しては、いろいろな書籍があるとは思いますが、最低限、『Introduction to Computing Systems: From Bits and Gates to C and Beyond』に書かれているような内容です。OSに関して言えば、たとえば、Linuxであれば、『Linux Kernel Development』の内容程度です。データ構造とアルゴリズムに関して言えば、『プログラミング作法』の第2章の内容程度です。
- 読みやすいコードを書くことに関しては、徹底してレビューして指導していく必要があります。