見出し画像

【就活前に知りたい】高速化プログラマになるならクリアしておきたい経験3選

プログラミング歴30年余のムンペイです。
ソフトウェアを高速化する会社で管理職をしており、採用面接なども担当します。
応募してくださる人は、出身大学も立派で会話から知性が滲み出る方々ばかりですが、高速化プログラマとしてDeep Diveして長くやっていけるだろうか、特に長期にわたる学習とアウトプットを前向きに続けられるだろうかと心配に感じるケースもあります。これをクリアしておいてくれればきっとそう感じないだろうと思うことを3つご紹介します。


1.プログラムが扱うのは一般の数学ではないと気づく

プログラミングやコンピュータの原理はしっかりと数学で裏付けられています。しかし、一般の数学ではなく、コンピュータ用の数学です。

コンピュータの計算の数学は、数値のケタは有限で、そのケタ数はビット数で定義されていて、その上に各種の演算が構築されています。(興味があるかたはガロア体、合同体を調べてみましょう。)
ですので、理想的な数値のみを扱う一般の数学では気にしなくて良いことが、コンピュータ上の計算としては重要だったりします。(例:桁あふれ、情報落ち、シフト演算)

難しそうですか?
いえ、私自身は情報系大学院卒ですが、コンピュータ用の数学を学んだのは、プログラミングを覚えるよりもずっと後のことでした。ですので、数学だと考えずに計算機のルールだと思えば十分に理解できます。

逆に、数学系や物理系出身の方は、高度な概念の世界でやってきているため、一般の数学として見ている方が多いようです。
数値解析(シミュレーション)や測定データの分析などでスパコン級のプログラミングを経験している方も多数いらっしゃるのですが、浮動小数点数ばかり扱うので、コンピュータ内部の数学は見えにくいかもしれません。

また、コンピュータの知識を学ぶはずの情報系でも、近年はAIやデータ分析などハイレベルな(コンピュータというハードウェアから距離のあるという意味)応用分野が流行しているせいでしょうか、こちらも結構いらっしゃいます。

本件は、コンピュータはどのように動くかという根本に関わるので、プログラミングで飯を食うならマスター必須です。しかし、そうだと気付けば容易にキャッチアップできます。

2.パソコンを自作する

WindowsやLinuxを使っている人なら、パソコンの自作を経験してみましょう。Mac派の人は、小さいLinuxサーバーを作ってみませんか?

自作と言ってもパーツを選び組み立てるだけです。しかし、主要なパーツがなんなのか、パーツの組み合わせにより全体としてどのような性能になるのか、どのように接続されているのか、性能のコストの関係はどうなのか、物理的な大きさはどのくらいなのか、電力消費はどのくらいか、、、など、多数の学びが一度にあり、プログラミングに応用できる知識がぐっと深まります。

プログラミングを四六時中する会社の面接なのに、パソコンを持っていないという人がたまにいらっしゃいます。プログラミングが好きですと言われてもちょっと信じられません。。

また、どんなパソコンを使っているかという質問をすることがありますが、家電量販店の店員に選んでもらったので中身はわからない、という回答だったことがあります。コンピュータに興味がないと、理解も進んでいかないのではないでしょうか。

安いものではないですが、バイトをして買ってみてください。さもなくば、パソコン部などに入れば、きっと自作も経験できます。

3.プログラミングに好奇心を持つ

プログラミング自体に好奇心を持てるか、できれば湧き出るような好奇心、があると良いでしょう。まだなら、確認してみると良いです。
好きこそものの上手なれとも言いますので、好きであるほうが、好きでないよりもずっと成長も早いし、成果も出してくれるでしょう。同じ会社とは限らなくても、長くプログラミングで働くにも必要なことだと思います。

確認するには、やはりプログラミングの真髄に触れてみることだと思います。技術が驚くような結果を生む場面です。高速化はそういう場面を感じ易いと思います。
例えば、皆さんご存知Zip。ファイルをまとめて何故かサイズを小さくするアレです。このような圧縮ツールは実は他にもたくさんあり、圧縮率と高速性のせめぎ合いで激しい競争が行われています。
一見、Zipが勝利したようにも見えますが、ネット向けでは別の戦いがあったりして面白いです。

私は管理職なので、職場でプログラミングする時間は流石に少なくなりましたが、プライベートではクラウドやLLMなど新しい技術を試してみるようにしていて、まだまだ好奇心が刺激

よく副業の例として、プログラマになろうというのがありますけど、好きになれるかは重要だと思います。なれればよしですが、好きになれない場合は、すごく簡単なこと(=安い仕事)しかできないのではないかなと思います。

クリアできてない?でも諦めなくていい!

結局は、興味を以て自ら追及する姿勢があるか、ということになるのかもしれません。

さて、まだクリアできていないどころかゼロからのスタートだという人も、高速化プログラマになりたいならあきらめる必要はありません。誰にでもスタートはあります。

数学は教科書がありますので、調べてみましょう
パソコンは、詳しい友達に手伝ってもらって自作PCを購入してください。用途はもちろんプログラミング!と言いたいですが、ゲームでもいいと思います。詳しい友達がいない場合は、PCショップの店員さんに相談すると良いでしょう。PCショップもない人は・・・私に聞いてください。
プログラミングが好きかどうか分からない人は、やってみましょう。ゼロからならProgate、ドットインストールなどもいいですし、もう少しアルゴリズム寄りにするなら Paiza、あるいはもっと上級の AtCoder などに挑戦しましょう。

さて、これらをクリアして、無事に高速化プログラミングの世界に入門すると、逆にその奥の深さに目眩とワクワクな日々が始まるわけですが、この話はまたの機会に。

これにて御免!

(見出し画像は UnsplashHunters Raceが撮影した写真を使わせていただきました)

この記事が気に入ったらサポートをしてみませんか?