SSブログ

レベル1 初心者 [ソフトウェア・スキル・インデックス]

ソフトウェア・スキル・インデックス」では、7つのレベルを定義しています。その中で、レベル1である初心者は、次のように定義しています。
ソフトウェア開発を行うには、プログラミングの基礎知識や、コンピュータに関する基礎知識が不足している
拙著『プログラマー”まだまだ”現役続行』では、次のように解説しています。
レベル1:初心者

 今日、ソフトウェア業界に就職する若手のほとんどが、このレベルだと思います。コンピュータの動作原理の理解や基礎知識がなく、プログラミングの基礎知識や経験がなかったりします。
 このレベルでは、しっかりと基礎知識を身につける必要があります。単に、与えられた簡単な仕事をこなせるだけの知識を修得するだけでも、初級職人や中級職人まではなれるかもしれませんが、それ以上を目指すとなると、コンピュータの基礎もマスターしておく必要があります。
 それと、もう一つ忘れてはならないのは、プログラムは動作すればよいというものではなく、人が理解できる読みやすいコードを書く必要があることです。その重要性をしっかり学習しておく必要があります。
 初心者レベルでは、業務で使用するプログラミング言語をきちんと学習するだけでなく、コンピュータのハードウェアの基礎知識、およびデータ構造とアルゴリズムをきちんと学習しておく必要があります。
 しかし、多くの職場では、プログラミング言語は、使用する機能だけという表面的な学習だけで、きちんと言語を学習しないことが多いのではないかと思います。それに加えて、データ構造とアルゴリズムの基礎を学習しないまま、ソフトウェア開発を行っている人が多いと思います。その結果、ソフトウェア開発の経験年数がかなりあっても、たとえばハッシュテーブルやO表記といわれてもまったく理解していなかったりします。
 そして、初級職人の域を出ないレベルのまま年数を経ているため、組織上は開発グループのリーダーをやったりしていますが、中級職人や上級職人になることなく、中途半端な状態で年を重ねていたりします。
 初心者に対して、プログラミング言語、ハードウェアの知識、データ構造とアルゴリズムを教えるには、「本を読んで勉強しなさい」といっても無理があり、かなり強制的に学習させる必要があります。
 一方で、初心者は書かれたプログラムを動作させるだけで精一杯かもしれませんが、それでも、業務で開発させるソフトウェアは読みやすくなければなりません。したがって、プログラムが読みやすく書かれているかどうかは、常にチェックして、指導していく必要があります。そのために、しっかりとした中級職人以上のソフトウェアエンジニアが、直接教育や指導を行う必要があります。
 初心者自身は、自分を指導する人が、きちんと指導してくれるレベルの人なのかどうかを判断することはできません。初心者の教育やOJTには、継続した学習を行っていて、読みやすいコードを書くことに常に注意を払っている先輩を担当させる必要があります。逆に、経験年数は長いけれど、普段まったく学習もせずに、きたないコードを書いているような人に、初心者の教育やOJTを担当させないようにしなければなりません。
 間違ってこのような人をトレーナーとしてしまうと、初心者はいい加減な知識のまま、本人は仕事をこなせるようになったと錯覚するだけで、たかだか中級職人の域で止まってしまう可能性があります。
 初心者レベルは、まったくのプログラミングの初心者ならば、就職してから半年から一年ぐらいだと思います。

この解説を読み返してみると、初心者には次のことを最初の一年で教え込まないと、次のレベル2にはなれません。
  • 1つのプログラミング言語をきちんと学ばせる
  • コンピュータの基礎(ハードウェア、OSの仕組み、データ構造とアルゴリズム)を学ばせる
  • 読みやすいコードを書くことを徹底させる
具体的に私自身が想定している内容、次の通りです。
実際には、これらをすべて行うには、1年では足りませんが、最初の1年目にこれらを習得するための指導が徹底して行われている必要があります。そして、最初の3年以内にほぼ習得が終わっていることが望ましいです。そうでなければ、ソフトウェアの開発経験が何年あっても、初心者レベルのままのソフトウェアエンジニアだけしかいない組織になってしまいます。

プログラマー”まだまだ”現役続行 (技評SE選書)

プログラマー”まだまだ”現役続行 (技評SE選書)

  • 作者: 柴田 芳樹
  • 出版社/メーカー: 技術評論社
  • 発売日: 2010/09/04
  • メディア: 単行本(ソフトカバー)