• 2019年9月2日月曜日
アリスト戦記
アリスト戦記 https://blog.aristo-solutions.net/2019/09/blog-post.html

基本情報がどう仕事に役に立つのか教えてやるぜ!!

情報処理試験が近づくと「基本情報なんて取得しても無意味」「デキる人間は基本情報なて取得しない」みたいな論調が目立つようになるけど、敵わんな。(´×ω×`)

昔からそうなんだけど、「学歴が高くなるのに比例して仕事の能力は下がる」「資格の勉強は実際の仕事には役に立たない」みたいに、学問と実業務を切り離す、もしくは学問を研鑽する程に実務能力が下がるという論調の輩は一体どこからそういう理論が発生するのか。

熱心に学問を志す崇高な人々に対して無礼千万である。

どうしても分からんというのなら、どう役に立つか僕が教えてやろう!!

結び付ける

まず根本的な問題だが、この手の人で恐らく最も欠如しているのは、「勉強した内容を実業務に結び付けるのにはどうすれば良いか?」という探求心だと思う。

勉強して終わり、取得して終わり、じゃないからな。
資格取得はあくまでも基礎知識を修了したに過ぎなくて、そこから「さて、勉強した知識をどうやって活かそうかな?」という実践に突入する。

エンジニアには「身に着けた知識を世に活かす」という観点が必要。

この観点が欠落してる輩がいるのよ。
だから、「資格なんて何の役に立つの?」みたいな感じに、ポカーンと口開けて教えて貰うのを待っているかのような発言が出せるんだ。

どう役に立てるかが腕の見せ所なわけで、持ってるか持ってないかに終始したツイートなんぞするんじゃない!!

同様に、「とりあえず取っておけば良いんじゃない?」みたいな論調の人も情けなさ過ぎる。自分が何の為に勉強しているのか、それが分からないのは恥以外の何物でも無いのに、何故それを軽~くツイートしてしまうのか?

まあ、精神ばかり話してもつまらないから、具体例を教えよう。

具体例:チューニング

基本情報で役に立つ局面、それは処理速度のチューニングだ。
僕はJavaのプログラマーだけど、そのチューニング理論の原理原則は基本情報にある。

ディスクのシーク時間に関する問題だな。




同じ問題を見てもね、「ああ、こういう問題だなぁ」としか思わない人と、「この知識がプログラミングのどの辺りに反映されてくるのか?」と結び付けて考える人では、当然差が出てくる。

では、この問題がチューニングとどう関係するのか?

そのままだけど、プログラムの処理速度はディスクの読み込み速度とクリティカルな関係があるということだ。

チューニングの観点はいくつかあるんだけど、この問題はディスクIO時間削減という観点でチューニングする際の基本的な考え方である。


  • ディスクが物理的にグルグル回転する動作は遅い。
  • メモリから電子的に読み込むのは速い。
  • だから、ディスクIOを減らし、メモリIOに切り替えることで処理速度が上がる。


処理速度の根底には物理がある、という辺り前のことを教える問題なわけよ。

ただ漠然と、

(´・ω・`)「ディスクIOを減らせば速くなるんですよ」

としか思っていないようではダメなんだ。
「根底は物理」という、この当然の概念を理解した上でソースと照らし合わせなければチューニングは出来ぬ。

オマケ:プレイステーション

ふと思い出した話なんだが、昔のゲームは更にこの観点が重要だったそうだ。

中学生の頃にゲームの雑誌で読んだ話なんだが、昔のゲームって、常にCDをウィンウィン動かして読み込んでたでしょ?
プレイステーションの起動が遅くてストレスが溜まるとか、思い出深い。

あれが正にこれなんだけど、ディスクが回転しているから遅かったのよ。
でも、ハードウェアの限界だったんだろうな、メモリに格納することは無理で、どうしてもディスクから読み込む必要があった。

どうしたら良いか?
CDの物理配置を調整したそうだ。

最初に読み込むデータをCDのこの部分に置いて、次に読み込むデータをCDの隣の場所に配置すれば、ディスクが回転する距離が減って速度が上がる。

CDを焼く時にデータがどの場所に来るかを計算とか、よ~やるわ。(´×ω×`)
最近は楽な時代になった。

ディスク配置の計算方法は僕でも分からねえ。
しかし、基礎理論は基本情報に含まれていることは分かる。
だから雑誌に書かれている文章の意味が理解できるわけよ。

志が必要

上記はあくまで一例なんだけど、とにかく、大事なのは知識と経験を結び付けて考えるバランスの取れた両輪ということだ。

木からリンゴが落ちるのは誰でも知ってるけど、引力と結び付けて考えたのはニュートンだけだった。

IT業界も同じで、「とにかくこう書けばいい感じに動くんですよ!!」じゃなくって、学問的な裏付けを持って体系化した理論の元で実行しなければ、完成されたアーキテクトにはならん

あと、これも当たり前だけど、基本情報を取ったら応用情報、システムアーキテクトと次があるからな。

本当に基本情報しか持っていない段階だと意味が分からんかも。
僕も新人の時に基本情報を取得した時は意味分かんなかったけど、7年目くらいで上述のシーク理論の意味が分かった。

10年20年と勉強して、やっとこさ1年目の頃に勉強した内容の意味が分かるというか。
だから若手の子が「基本情報って何の意味があるんだろう???」みたいな気持ちになるのは無理も無いんだけど、そこは決意を持って頑張って貰うしか無いな。

まとめ

まとめると、エンジニアに必要なのは謙虚さであるということだな。

「基本情報なんて何の役に立つの?」

なんてのは言語道断だし、

「とりあえず取っておけば良いんじゃない?」

なんてのは、逃避である。勉強する人間は勉強内容に自信を持つべきだろう。
自分のやってることに胸を張って言えないなんておかしいじゃねえか。

もし今の僕が基本情報を取る前の、基本情報に何の意味があるのかも分からんような新人に戻ったとしたら、こう言うだろうな。


(`・ω・´)「具体的な用途まではイメージが湧きません。しかし、頑張って勉強して少しでも世の中と自分の人生に役に立てられるように頑張りたいと思います」


これが学問というものだ!!

0 件のコメント:

コメントを投稿