オカンハック

母親目線での「便利!」を備忘録的に書き溜めていこうと思います。

「低レベルでハイレベルなプログラマ」 ←矛盾はしてない

こんにちは。カーチャンです。

先日、転職エージェントの方とプライベートでお話する機会がありました。

「お客さんから
『低レベルな人材が欲しい』
と言われて、でも、話を聞く限りどうも難しいことをやるみたいで、混乱しちゃったんですけど。」

うん、カーチャンも昔から【低レベル/ハイレベル】って用語、失礼じゃない??と思ってた。
では、コンピュータ用語の「レベル」って何か、説明しますね。

レベルって何?

コンピュータは、0と1の二進数の世界と言われます。
0 1 とは、電気(電圧?)の強弱のことです。
それを人間用に翻訳して、ブラウザなどに表示したり、
逆にカメラで撮った情報を電子データに変換して保存してくれるしくみになっています。

これ、ひとりで全部プログラムするのはかなり無理。
なので、「文字とデータを相互変換してくれるプログラム」「カメラ制御のプログラム」「それらの窓口となるプログラム」のように、プログラムを役割分担して、それを組み合わせて作っていきます。

この組み合わせは、ちょうど層(レイヤー)のように重なっていて、
機械を物理的に操作するような、土台となるプログラムを「低レベル/低レイヤー」のプログラムと呼び、
人間が直接操作するプログラムを「高レベル/上位レイヤー」のプログラムと呼びます。

なので、「低レベル」ではなく、「低レイヤー」と呼ぶ方がいいと思うんです。

低レイヤーの方が難しい(と思う)

ざっくり言うと、カーチャンは、あなたが操作しているアプリを作る、高レイヤーの仕事をしています。
なので、低レイヤーのことは分かりません。

しかし、仕事で低レイヤー経験者さんとお話すると、
いわゆる「再現性のないバグ」に悩まされることが多いようです。
たまたまなんかの拍子に、触っちゃいけないメモリ領域に書き込んじゃったとか、
たまたま処理と処理がぶつかっちゃったとか。

「機械がおかしい。」「いや、ソフトにバグがある。」と、機械屋さんとソフト屋さんで喧嘩することも(稀に)あると聞きます。

また、低レイヤーのプログラムは、機械と強い結びつきを持っているので、それだけ機械ごとのチューンナップが必要です。
困った時に検索するときも、機械特有の困りごとだと、参考になる情報がないかもしれません。

ゆえに、低レイヤーの人材の方が、高い技術レベルをもとめられる傾向にあると思っています。

IoTで低レイヤー人材が求められている

今、車から家電まで、なんでもソフトウェアが搭載され、さまざまな家電がネットワーク経由で操作を受け付ける流れになっています。

ということは、そういうプログラムを組める人が必要となっています。

ただ、前述のとおり、プログラマにもジャンルがあるので、
「昨日まで業務アプリを組んでたけど、今日から制御部隊に行ってね⭐️」
というのは、
内科医にいきなり脳神経外科のメス握らせるようなものなので、
じっくり育てていただきたいものです。

まとめ

コンピュータが多層のプログラムで成り立っていて、
機械に近い方を「低いレイヤー」と表現することはご理解頂けましたでしょうか。

レイヤーが低い部分まで理解していると、プログラムがなぜ動くのかという理解が深まるので、興味のある方はぜひ挑戦してみてください。

ネットワークから制御できる「IoTプラレール」を作ったママさんもいます。
すごい!

ちなみにふるさと納税の枠が余っている方は、「ラズベリー・パイ」を返礼品にしている自治体があるので、そちらからゲットしてはいかがでしょうか。
ふるさと納税サイト [ふるさとチョイス] | 埼玉県狭山市 - No.116 Raspberry Piで始めるプログラミング学習キット

電子工作、楽しそうですよね。
子供が大きくなったら、やってみたいと思います。