🐟

「実際にコード触る方がエンジニアとしては成長できそう」はその通りだと思う

2024/08/24に公開

https://x.com/NamiEngineer/status/1826551879192773116

新しいことを始めたとき、あれこれ難しいし用語と共にふと疑問を得る。「これはどのくらい大事なことなんだろうか」と。何が実用なのかわからない解説が多いのも事実。教科書的なところが試験や教本にはあるので、学ぶ上では避けて通れないし、ビギナーがそれがどれほど重要かは判断しにくいでしょう。であれば、自分の直感を信じて進むのが賢明と言えそうだ。

基本情報の勉強

機械電子を勉強する専門学生時代のときに取得した。地元トヨタのお膝元、みんな機械や電子関係の仕事を目指した学生が通う学校だった。優秀なもの1名はトヨタ本社勤務もできるそんな学科で、授業でネジの図面設計のために2D CADを触っていたが、一般的なパソコンではなく、CAD専用のパソコンだった(なんという名前かは忘れたけど、マウスのボタンは3つ位のボタンがあった)当然パソコンがどういう仕組みで動いているのかとか、プログラムがどういうものなのかよく分かっていなかったけど、図面を引いて自動車部品の製図するより、プログラムで何かを動かす方が楽しそうという理由で、当時の言葉でいうとWeb系、オープン系のIT世界に入っていくことになるのだけど、基本情報の資格を当時通っていた専門学校では過去に1名の現役合格を出したのみでそれ以来は合格者はなく、合格の暁にはお金が貰えるという理由で頑張って勉強してみようと思ったのがきっかけだった。ちなみに私はCASLⅡで午後を乗り越えたけど、就職時の企業説明会でだいぶディスられた記憶がある。なぜC言語やJavaではないのかと。でも今思えばCASLⅡといった言語を体系的に学ぶことが出来たのはあのときだけだった。確かにIoTの組み込みでアセンブラで実装することはあるけど、私が見た実際の現場もその一瞬だけだった。しかしCPUの気持ちになって設計、実装するというのも悪くないと思う場面もこれまであって、むしろ「はじめて読む8086」などの本に出会えて良かったとも思える。

まあいいかで前に進める能力

前置きが長くなってしまったが、結論からいうと、大事かどうかわからないこと、しかもそれが難しいことで、何かを諦めてしまうくらいなら、分からなくても良いから少しでも前進できる方法で進んだ方が良いと思っています。
AWSが登場する前からWebプログラマをやっていた身としては、自宅サーバーを運用することは憧れの1つだった。アキバで買った自作PCにGentooをインストールして満足してしまった自分は早々にAWS EC2を触ってしまったのだけど、仕事でもWeb開発をしながらEC2のボトルネックをなんとかしないといけない事情もあり、IOやマシンリソースのstatを見てはどうチューニングするべきかみたいなところを頑張っていた記憶がある。ただLinuxに関しては素人で、まったくわからな過ぎてトラウマものだったので、辿り着いたのがはじめて読む8086、Linuxカーネル本だった。正直今も活かしきれないのだけど、この本を読むに至っては分からなさすぎて別の本を読んでは戻り読んでは戻りを繰り返し、自分なりに理解出来る道を模索したものだった。このとき、複数の本を買ってみて、自分に合う解説を見つけることが大事なんだと考えに至り、今もまとめて本を買っては読み飛ばしながら理解を深めるスタイルを続けている。
何が言いたいかというと、基本情報の資格やCASLⅡ、はじめて読む8086、Linux本が今までのキャリアで活かされているかどいうと正直大した影響はない。むしろそれらが無かったとしても同じような人生を歩んでいた可能性は高いし大して困らなかったかもしれない。なんだったらその時間を娯楽に費やしても変わらなかったかもしれない。その時々の誰かの憧れに近づこうとする、試験合格のお金を得るようと頑張るくらいの努力は実は大した影響はなく、やっぱり継続できるくらいの好きかどうかは大事な気がしている。

まとめ

仕事をする上で取得が必須な仕事もあればキャリア形成上のものもある。資格だけで実力を推し量ることはできないと思うと、基本情報については個人的にはあってもなくてもどちらでも良いと思う。とはいえ転ばず先の杖のようなものではあるので、取得していると当の本人にとって助かるときもあるだろうし、それが仕事のパフォーマンスに繋がり評価や売上に貢献することはあると思う。求職で役に立つこともあるかもしれない。
白黒しないまとめになってしまったが、本当にどちらでも良いと思っている。私の場合、CADトレース技能審査やCAD利用技術者の資格も持っているが、全く役に立たない進路を歩んでしまった。その資格を利活用した仕事よりも好きな仕事を見つけたおかげで。結局人生は何が起きるかわからない、突然人生の選択に迫られることだってある。なので、まあいいかくらいの気持ちで進むことができるのも1つの能力なんだなって思うようにしている。

補足

IoT関係をやるとbitや○進数は必須の分野なので、基本情報というくらい基本なことは抑えた方がいいと思う。Web系だとそのあたりがうまくラップされている、先人の知恵としてフレームワークやライブラリーなどで直接意識しなくてもそれなりに作れるので、同じIT従事者であってもやること次第で分かれるかなと思う。

https://x.com/ebiebi_pg/status/1826966756071723114

DBのカラムにこの意味でのフラグが入っていることはみたことない。組み込みDBならあり得るのかもしれないが、それでも独立したそれぞれのカラムでいいのでは?という感じはする。自分がやっている業務ではオンメモリ上は上記通り各ビットに役割を持たせているが、DBに保存するときはそれぞれ独立したカラムにしている。整数値なら SELECT * FROM my_table WHERE my_column >> 0 & 1 <> 0; みたいなSQL発行もできるけど、そこまでやるか感とトレードオフかな。

追記

ビット表現から整数へ
https://www.postgresql.jp/docs/9.2/functions-bitstring.html

SELECT '1001'::bit(4)::integer >> 3 & 1 <> 0;

----------
 t

パターンマッチでもイケる
https://www.postgresql.jp/docs/9.2/functions-matching.html

SELECT '00010001' LIKE '___1____';

----------
 t

Discussion