tech
「知識の地図」を手に入れるため──エンジニアにとっての「資格試験」を考える(5)
サイボウズ・ラボの西尾 泰和さんが「エンジニアの学び方」について探求していく連載の第14回(毎週火曜日に掲載、火曜日がお休みの場合は翌日、これまでの連載一覧)。
「資格試験」テーマの第5回です。
本連載は、「WEB+DB PRESS Vol.80」(2014年4月24日発売)に執筆した「エンジニアの学び方──効率的に知識を得て,成果に結び付ける」の続編です。(編集部)
第1回のAさん(仮名)は資格試験にとても肯定的でしたが、一方、実名でアンケートを受けてくださった第2回のおおつねまさふみさんも、第3回のはせがわようすけさんも、あまり資格試験に肯定的ではない印象を受けました。
それがなぜなのかを考えていて、実名で活動している人はその活動によって「他人に対してのスキルの証明」ができるので、実名で活動していない人に比べて資格試験の価値が下がっていて、それが「資格は役に立たない」という感じ方につながってるのではないか、という仮説を立てました。そこで今回は、実名で活動していてかつ資格試験に価値を感じている人として、「IT業界を楽しく生き抜くための『つまみぐい勉強法』」や「Mobageを支える技術」などの著書があるDeNAの渋川よしきさんにお話を伺いました。
資格試験の勉強は役に立ちましたか?
大学時代に第一種情報処理技術者試験を受けて、網羅的に興味がなかった分野まで勉強するきっかけになったので、役に立ったと思っています。
勉強したことでどういうメリットがあったかを具体的に掘り下げてみたいです。というのは、学ぶかどうか悩んでいる人も「学びのきっかけになる」は否定していなくて、気にしているのは「学んで役に立つのか、かける時間に見合うのか」だからです。具体的に何を学んで、それが何に役立ったか、という例を聞きたいです。
学生のときに気にかけてなくて、具体的に役に立ったのは、通信の伝送効率とか、並列処理の効率性とか、データベースとか、テストカバレッジとかですかね。趣味のゲーム開発では出てこないけど、お給料をもらうには大事なところを学びました。
今振り返ると、後々役に立つ「通信の伝送効率」の知識は学生のときには気にかけてなかったわけですね。では、学生時代に初めて「通信の伝送効率」を学んだときは、それに対してどう思いました?
ロスがあると効率が一気に落ちる話とか、そういうのが面白いなあと。ソフトウェアの場合、CPUや通信の限界を超えた性能は出せず、そのボトルネックの稼働率を上げなければならないので大事な前提知識を得ましたね。
それまで気にしたことのなかった「ロスと効率の関係」を教科書で見て、感じたのは「面白いな」ですか? それとも「こんなこと勉強して何の役に立つんだろう」ですか?
前者です。
学んだ当時は必要なシチュエーションではなかったが、面白いなと思って学んだ。それがあとになってから仕事で役に立った、という理解で正しいですか?
ですです。一番良かったのは、「知識の地図」が頭の中にできたことですね。それまでは目に見えている情報以外に、「存在を知っている」というのが少なかったけど、「こういうのもあるんだ」というのが増えました。
伝送効率の件は具体的にどう役立ったのですか?
自動車の車内ネットワークの伝送路関連の仕事したときに「理解に役立った」ぐらいですね。試験の勉強は「存在を知った」「雰囲気を知った」ぐらいなので、実際の業務でそれを使うには追加の勉強がきっと必要にはなります。だけど、雰囲気は分かっているので追加の勉強は楽になります。伝送効率とかCPUのキャッシュみたいな話はゲームのGPU周りの話を理解するのにも応用できた気がします。
業務上必要になったことを学ぶ際の効率が良くなったということですか?
効率は良くなったと思いますね。必要になったときに「何を勉強すればいいのか」「自分が何を知らないのか」を知っているというのは見通しがつけやすくなります。ソクラテスの「無知の知」ですね。
もし今、資格試験を受けるかどうか悩んでいる友達がいたとしたら、どうアドバイスします?
その友人が学生だとして、専門が情報系じゃなくて、趣味のゲーム作りとか、バイトで特定分野のコーディングしかしてないけど、プログラミングに興味があって将来の仕事にしたいと考えているのであれば、受けるのを勧めたいですね。
数学者が論理学を積み上げてコンピュータの基礎を作っていった時代と違って、今の時代は具体的なプログラミングから入ってくる人が大多数だろうから。知識の土台を作る上ではいいよ、と伝えたいです。
「Djangoの使い方」みたいな情報と違って、すぐに実践できるわけではないけど、そういう「情報」は「知識」と違ってすぐに陳腐化するから、遠回りだけど役には立つはず、と(筆者注:Djangoはフレームワークの一種。詳しくは、本記事末で解説します)。
なるほど。「専門が情報系ではなくて」というのは、情報系なら授業で基礎固めをされているはずだから?
ですです。情報系なら授業で「ドモルガンの法則」とか、基礎となっている理論もきちんと習うはずです。まぁ、僕は電気電子工学科だったのでそのぐらいのものは授業でも習いましたけど。
仕事としてやっていくなら陳腐化しにくい知識にも投資しましょう、ということ?
そうそう。
陳腐化しにくい知識を得るための手段として、資格試験は何か特別良いものなのですか?
分野が網羅されてて、勉強の手段が提供されてて、勉強の理解度が成績という数値になって分かりやすいというのはメリットかと思います。あと、流行り廃りを超えて生き残っているものが扱われているので、すぐに風化することはないと思います。
なるほど。
専門性を追求するには足りないけど、DBスペシャリストやネットワークスペシャリストなどの専門的な資格でも、応用情報技術者試験の知識範囲が前提とされているので、その部分の勉強は無駄にはならないはずです。
陳腐化しにくい知識を得ることに投資しよう、という点ですが、どれくらい投資するのでしょうか。極端な例として1年間休学して試験勉強するというのはやりすぎですよね。
試験合格する程度の勉強でいい気がします。僕は大学に通いながら電車の往復時間で1、2カ月ぐらいしか勉強しませんでした。実際に必要な期間はどのぐらい前提知識があるかによります。試験で合格しただけでは「知識の地図」を得られたに過ぎないし、仕事で使うには「経験=身につけたバッドノウハウの量」が必要になるだろうから、手を動かす勉強もしたほうが良いです。
必要な時間は前提知識の量によるので一概に言えないが、渋川さんの人生の中でのウエイトは「通学時間」程度だった、と。
通学時間程度の投資で、知識の地図を手に入れることができて、それは陳腐化しにくいので、仕事としてプログラムを書く上で必要になった新しいことを学ぶ上で役に立った、というまとめで良いでしょうか?
ですね。オラクルマスターとか、分野が狭い資格試験だとまた雰囲気は違ってくるかもしれないけど、僕の受けた情報処理一種はそんなメカニズムで役に立っています。
試験といえば、今HTML5認定試験にちょっと興味があります。HTML5ってAPIセットがたくさんあるけど、仕事で使うのはごく一部なので「こんなのもあるんだ」という確認をしたいな、と思っています。「仕事や趣味では一部しか関わっていない分野に関して、資格試験ではその分野の全体を扱っている」というのは資格試験が有効に機能するための大事な前提かもしれません。
情報処理一種の勉強では「知識の地図」が得られたに過ぎない、だけども地図を得て「自分が何を知らないか」を知ったことが、その後の仕事で必要なことを学ぶ際に役に立った、というお話でした。また、今もHTML5の地図を手に入れるために資格試験を利用しようとしているとのこと。この戦略が有用であるという信念がうかがえます。
そして、地図を手に入れるためにどれくらいのコストを投資するのかに関しては「通学時間程度」で、はせがわようすけさんの「他のものを犠牲にしていると感じない程度」とよく似た答えでした。あまり肩に力を入れ過ぎないことが大事なようです。
次回、最終回は6人分の意見をまとめて振り返ってみましょう。(つづく)
【コラム】
Djangoの使い方と基礎となる知識の違いに関して簡単に補足します。
DjangoはWebアプリケーション作成用のフレームワークであり、チュートリアルに従って少し作業するだけで、データベースの中身を確認、編集できる管理画面や、HTMLを生成するためのテンプレートエンジン、CSRF攻撃へのセキュリティ上の対策などを含んだWebアプリケーションを作成できます。動くものを作るためにすぐ実践できる情報というわけです。一方「WebアプリケーションはクライアントのWebブラウザからHTTPでリクエストを受け取って、それに対してレスポンスを返すものだ」という知識は、それを知っていたからといって何かができるわけではありません。しかし例えば画像が文字で表示されるというトラブルが起きたときに「HTTPレスポンスのContent-typeヘッダの値がおかしい可能性」を理解するためには、この知識が必要なわけです。
「これを知りたい!」や「これはどう思うか?」などのご質問、ご相談を受け付けています。筆者、または担当編集の風穴まで、お気軽にお寄せください。(編集部)
謝辞:
◎Web+DB Press編集部(技術評論社)のご厚意により、本連載のタイトルを「続・エンジニアの学び方」とさせていただきました。ありがとうございました。
SNSシェア