「優秀な若手SE(システム・エンジニア)やプログラマがなかなか育たない」・・・。

 取材先や読者の方々から,そんな悩みをお聞きすることが多くなってきた。もちろん今に始まった問題ではないのだが,製品・技術の変化が激しい最近は,以前にも増して深刻な問題になってきているようだ。

 私が以前からお付き合いいただいているライターのYさんも,そんな危機感を感じている一人。プログラミングの初心者向け書籍や雑誌連載で定評があるYさんは,プログラマとしての経験も豊富で,現在はSIベンダーなど数社で新人SE向けのセミナー講師も担当している。

 先日,IT Proへの新連載をお願いした際に,Yさんの考えをお聞きした。

---Yさんも若手SEの現状について危機感をお持ちだそうですね。

 最近,講師をしていて感じるのは,新人SEの人たちのコンピュータに対する関心のなさ,ですね。「ホントにコンピュータが好きでこの業界に入ってきたの?」とさえ思うことがあるんですよ。

---でも,SEやプログラマを目指す人たちは,基本的にコンピュータが好きだからSIベンダーやソフトハウスに就職するんじゃないですか。

 ところが,どうも違うようなんですよ。最近の企業はいわゆる“コンピュータ・オタク”よりも,幅広い知識を持った人を採用しているらしく,その結果,さほどコンピュータが好きじゃない人もたくさん入ってきている。若い人たちもIT業界は将来性があるから,というだけで就職先を決める場合が多いですからね。

---そういう人たちも,いざ企業に入ったら必要に迫られてコンピュータを勉強するでしょう?

 ところが,コンピュータの面白さ,を実感したことがないから,こちらが教えてもあまり興味を示さない。例えば,補数を使って負の値を表すというルールの下では,8ビットの2進数の「11111111」が「-1」になるということを以前記事で書いたことがあったでしょう。2進数の「1(00000001)」を反転「(11111110)」して「1(補数)を加える(11111111)」と説明しましたよね。私がコンピュータを勉強していたころは,「どうして反転して1を加えるとマイナスになるんだろう」と不思議でとても興味深かったんですよ。これはコンピュータのもっとも基礎的なことだし,そこがコンピュータの面白さだと思うんです。

 ところが,彼らはこういった基礎的なことを覚えるより,早くプログラミング言語を覚えたい,といった表面的なことばかり言うんです。まず最初にコンピュータの動く仕組みを理解しないで,本当にプロになれるのかな?

---でも,最近の開発ツールは高機能ですからね。ツールを勉強することで,システムを開発する即戦力が得られるのでは?

 そこが落とし穴なんですよ。教育担当者の側もどうしても即戦力を期待しますから,最新のツールの使い方などを重視しがちですね。セミナーの受講者からも,Visual Basic(VB)やJavaなど,「主流のプログラミング言語を早くマスターしたい」という声は多い。たしかにこれらのプログラミング言語は便利な開発環境があるから覚えやすいし,ある程度までは簡単にマスターできます。

 でも,それ以上レベルアップできなかったり,自分で一から新しいものを作れない人が多い。やっぱりコンピュータが動く仕組みをきちんと理解していないからなんですよ。教育する側も,もっと,原理・原則の部分の大切さや面白さを伝える努力が必要だと思うんです」

---基礎が重要だということは私もよく分かっているんですけど,これだけコンピュータの情報量が多い時代,何から手をつけたらいいか分からない人も多いと思うんですが。

 構える必要はないんです。遊び半分でいろいろ試してみて,自分が魅力を感じたり,興味を持ったことから始めればいいんですよ。プログラミング言語はVisual BasicでもJavaでもC言語でも関係ない。HTMLだっていい。自分がやってみて「面白いな,不思議だな」と感じたものから手を付けていけばいい。

 重要なのは「面白い」とか「なぜだろう?」と感じることですよ。例えば,HTMLで文字の色を赤くしたい場合はFONT COLOR="#FF0000"と指定するでしょう。この"#FF0000"が何を表しているのか,こういったことに「なぜだろう?」と思って調べていくうちに,自然にコンピュータの基礎に近づいていくようになりますよ。

 最新のツールの使いこなし,などのうわべの知識ではなく,こうした基本的なところから,コンピュータの面白さを実感していってもらいたいなあ。

---急がば回れ,ってことですか?

 コンピュータはそれほど難しくないんですよ。確かにいろいろな新技術が次々に登場して,どんどん大変なことになっているように見えますけれど,実はその底辺にある考え方はとてもシンプルです。しょせん,現代のコンピュータは「0と1という二つの信号を足して出力する」だけの機械なんですから。

 前に,コンピュータは足し算しかできない,引き算や掛け算,割り算もすべてコンピュータは足し算として処理する,と説明しましたよね。これは不変の事実だし,これからすべてが始まるんです。VBだって,Javaだって基本的には一緒なんですよ。基礎がきちんと分かっていれば,どんな言語だって使えるようになります。これはプログラミングに限らず,コンピュータ全般に言えることですよ。

---仕組みさえきちんと分かっていれば,恐いものなし,ですね。

 そう。基礎知識があれば,プログラミング言語なんてどれも同じじゃん,と思えるようになりますよ。新しいプログラミング言語が出てきたって心配することはないんです。大切なのは何よりも「コンピュータが好き」という気持ちと基礎知識。この二つがあれば大丈夫!

(早坂 利之=IT Pro編集)