情報処理技術者試験などのIT資格の意義とIT基礎知識の重要性
1.思いのほか拡散されたツイートの内容
以前、下記のようなツイートをしたら、思いのほか拡散されて、正直びっくりした。
プログラミング言語は何を勉強すべき?というよくあるアンケートがあるけど、大抵メディアに踊らされてる内容だと感じる。
— ふじわら775SE@猫icon/職場復帰 (@KF7757) 2016年12月11日
それなりに長くSI企業でいろいろ見てきた私として、真実(に近いと思える)事を書いて貼っておきますよ。(あくまでも基幹業務システム系の世界ですが) pic.twitter.com/pFAtHhf9fm
『プログラミング言語は何を勉強すべき?』と言いながら、実はそれ以外の事の方が重要だ、という内容になっていて、ちょっと外した内容であるのにも関わらず、けっこう拡散されてしまった。
拡散が多いと、反論もそれなりに来るのが普通だが、このツイートには反論がほとんど来なかった。(少しは来たが、3~4件程度だった)
反論が来ない事が、必ずしも肯定的とは限らない。しかし、目くじらを立てて反発する事が無いくらいには、それなりに響いた内容だったのかもしれない。
2.IT基礎知識が問われる場面の例
バッチ処理の多重化の検討
これは実際に、最近、私が後輩のPLから分析を依頼された事だ。
とあるJavaで構成されたバッチ処理が、目標の時間帯までに終了しない場合が出ており、多重化で効果があるかどうかを分析/検討して欲しいとの事だった。
ここで重要な事は、そのバッチ処理が、CPU処理で時間を消費しているのか、ディスクI/Oで時間を消費しているのか、という点である。
ディスクI/Oでかなりの時間を消費しているような処理であれば、処理の多重化の効果が大きい。何故ならば、コンピュータ処理の中で、ディスクI/O処理は、『とてつもなく遅い』(数百倍~千倍は遅い)ので、その処理中はCPUやメモリは遊休状態にあるからだ。
CPU処理が大半を占めている(CPU使用率がずっと高いままの)状況であれば、処理を多重化しても、その効果は小さい。
但し、CPU使用率が高くとも、多重化処理自体は可能である。CPUの論理コア数とアプリケーションの多重化の可否には直接的な関連は無い。また、Javaアプリケーションの場合、JavaVMやJITコンパイラの処理も同時に動いている事も頭には入れておく必要がある。
シェルスクリプト内におけるif文とtestコマンド
昨年まで、傷病を理由に三年間も仕事を休んでいた。その復帰直後には、簡単なシェルスクリプトを組んだり、テスト環境を整備したりといった仕事をやった。
シェル関連には経験豊富な先輩社員に、自分が書いたスクリプトを見てもらった。そのときに、if文の評価箇所でtestコマンドを使っているのを見たその先輩が、「このtestというコマンドは何?」という反応をした。同席していた他の若手メンバーから、「よくifで使われる"[“と同じ意味ですよ。”[“は実はコマンドなんですよ」という説明をされ、「知らなかった」と驚いていた。
3.日頃の業務だけでは知識が偏る
上記の2つの例が、上手い例になっているかは自信がないが、1つ目の例は、基本情報技術者試験レベルの基礎知識が問われる場面であり、2つ目の例は、Linux技術者認定試験(LPIC)レベル1程度の基礎知識が問われる場面である。
よく言われる事に、『試験をいくら合格したからといって仕事ができる事にはならない』という主張がある。それは真実だ。
人間の業務は様々な要素が絡んでいる。とても画一的な試験だけで、その能力が測れる訳がない。
しかし、その業務の前提にあるはずの『基礎知識』の有無について、IT資格試験はひとつの判断材料になり得ると思う。
仕事をしている時、他の人に、『こんな事は基礎知識じゃないか』と、ツッコミを入れたくなった経験はないだろうか。
これは試験勉強をしてみて改めて思う事だが、『日頃の業務だけでは知識が偏る』、『日頃の業務で使っている知識は案外せまいものである』という事実である。
上記の例では、2つ目の例がまさにそうである。長年UNIXシェルを使う仕事をしてきた先輩でも、if文に使われている"[“コマンドの真の意味を知らなかった。
それですぐに困る事はないだろうが、場面が異なれば恥をかく可能性もあっただろう。
4.他の人の事はされおき、日々是精進で勉強
試験勉強にはモチベーションが欠かせない。個人的には、左門至峰さんの著書を読むと、やる気になってくる。
私は、もう一度、基礎固めから学習のやり直しをしようとしている。
何せ、私達の世代は、もしかすると一生働き詰めになるかもしれないのだ。
謙虚さを忘れずに、でも、自らは向上心を忘れずに。