「勉強」というテーマで記事をしたためようと思ったんですけども、情報技術に身を捧ぐエンジニアの勉強はなにやら他の勉強と趣が違っているように思えたので切り出す。

◆アハ体験のため

興味の気持ちが解消されたとき、あるいは、互いに繋がっていなかった情報と情報とがリンクしたとき、報酬系という臓器から汁がチョロチョロと染み出してくる。それは透明で、うまあじを豊富に含有する。それを脱脂綿にふくませてちゅうちゅうと吸うとなんか幸せな気持ちになる。

そういう体験の為に学習するのがとても楽しいですよね。

技術の勉強していると、知らない言葉がたくさん出てくる。ホントにバグってんじゃねぇの、レベルデザインおかしいんじゃねぇの、ってくらい沢山の知らない言葉が出てくる。

今日で言えば、LLVMというものが俺の中でバズった。C言語って多分なんか自信ないけど必ず恐らく絶対に辛うじてGCC通ってると思ってたんスよ俺。今日の今日まで。

それは違った!FreeBSDがGCCからClangってものに鞍替えしてたって記事を見つけて「Clangなにそれ。うーん。おいしいのかな。」と思ったらコレですわ。そして、その記事も2012年のことだからね。俺がまだ技術の技の字も知らないペーペーのクソ童貞だったときからGCCは衰退しました。

勉強していなかった領域であったがために、「C言語って低級言語だしそのままマシン語になっちゃってんでしょマヂウケル」みたいに思ってたら背後からズドンと掘られた形だ。.NET IL的な感じで中間言語を踏んでいやがった。(無論、踏んでいない場合もまだある。)

それはまだいい。それはまだよくて、以下の驚きポインツがあった。

  • ClangはAppleが1から書いてオープンソース化したCコンパイラ
  • Rustというプログラミング言語もまた、LLVMの中間言語(LLVM IR)にコンパイルされる
  • LLVMからWebAssemblyのバイナリが生成できる

上はまぁ良いとして、下ふたつは ふーんエッチじゃん。我が友よ 冒険者よ。

RustもWasmも個人的にいま熱い関心事だったからその辺の繋がりが見えてとてもびっくり。「そうだよね!そうなっちゃうよね!」っていう納得感も嬉しい。ワクワクしましたとも。そのワクワクが次なる勉強への動機づけになる。

というか、Rustから直接Wasmのバイナリを吐けるってハナシじゃなかったっけ?今後そのへんがどうなるんだろ。LLVM経由でWasmになるんだろか。でもなんかWasmから更に経由するし、何段階踏んでんだよ。出世魚か。おいおいおーい!何段階だーーー!こらー!出世魚かーーい!っつって。でもLLVMはもはやVMでのうてコンパイラー基盤ですと。だからWasmバイナリを出力しても何の問題もないね。ラミレスビーチの誓い♂
あとLLDBはDBでのうてデバッガーですよと。GDBに対応するものだろう。うん。ふふ…うふふ…。

といった具合に、今まで知らなかった語彙を知ることで、アンテナの範囲が広がる。もっと色々楽しくなる。世界が色づいて見えやがるぜ。涙が、涙がとまらねぇや。

◆成長曲線

技術に限ったことではないけど、能力は指数関数的に成長するものと思う。学ぶことの面白さもそう。

であるからして、最初の頃は技術の勉強ってつまらないかもしれない。だから習得したいなら情報系の大学いって題を課されるとか底辺斜陽IT企業に就職するのが早いんじゃないのか。研修あるところね。少なくとも俺には、独学で技術始めるって難しかったと思う。

独り身であったら、プログラミングスクールなんて行かずとも就職しちまったほうが良い気がする。というのと、良い企業には就職しないほうが良い。周りがデキるやつばっかなのは辛そうだね。クソ企業に就職して死線を超えながら、周りの意識の低さにブチギレそうになったら転職すればいい。それは正当性のある、納得感のあるステップアップになるはずだ。

最初っから辞める気で就職するならブラック企業に大打撃も与えられるしね。粘着質な激痛おきみやげを献じろ。法律とか制度とか行政サービスとか知っていれば勝てる。

はなし逸れたな。

◆勉強したくねぇんだけど?

それは、見方が違うだけだと思うんです。

つまり、「銀レウスは頭の肉質硬い。翼が柔らかい。」みたいなゲームの知識であればそれを勉強とも思わないじゃん。「ユダはレイの飛翔白麗が美しすぎて死んだ。」という事実も知っている。覚えている。

でも、モンスターハンター2ndGというゲームに興味のない人、遊んだことがない人に対して「銀レウスは頭の肉質硬い。翼が柔らかい。」という知識を教え込んでもスッと入らないと思う。

興味があるかどうかが重要なんだと思う。面白いと思えるまでは確かに勉強っぽいのかもしれんが、ある閾値を超えるともはやそれ勉強じゃなくなってくる。永遠に調べ物できる。

◆高速かつ的確な判断をするため

知識がなければ高速かつ的確な判断を下すことは叶わない。意思決定がブレる。

例えば低レイヤ(視点不明)を知っている人と知らない人では判断する能力に大きな差が発生する。その差が何を引き起こすかといえば、「傍から見れば一瞬で答えが出るようなことについて複数人でうんうんと長い時間考える」「間違った選択をする」「手戻りが発生する」的な事象。

それらって、知っていれば一撃なんすわ。迷いようもねンだわ(小室圭)。だからその「知っている状態」になりたい。どうやって知っている状態になるのか。それは、勉強するしかねンだわ(小室圭)。

知識さえあれば、何かを判断/選定するときに楽ができる。何がポイントなのか、どこを確認しておけばいいのかが分かるから。

◆無駄でしかないことをしないため

国のIT関連予算は財布がガバガバだったりする。甘い蜜。詳しくいうと多方面からすげぇ怒られるのでやめとくけど、例えばで言うならシステムの整備やら開発に56.2億円とか145億円とかかかる道理はない。

優秀なエンジニアと優秀な官僚をチョロっと揃えて然るべき裁量権を与えればキックオフからリリースまでで3億すら到底かからんように思うし、ランニングコスト含めても全然届かない。俺の想像もつかないやんごとなき理由があったとしても、あの内容で二桁億円はありえん。沢山の無能の雇用をつなぐために、あるいはどっかのお偉いさんが私腹を肥やすために百億いくらかかっている。

実際のところ、無駄ではない。お金が闇に消えるわけではなくて、圧倒的に効率の悪いやり方をしているからまぁ普通に消化されるんだと思う。天下り先に行った効率の悪い人間にお金を流し込んだりね。この案件については詳しくは知らないけど。

クッソ効率悪いことしているってのは、国の人がITの勉強してたらバレる。だけど日本はさすがの後進国なのでしょうがない。大抵の人はITで何を達成できるかすら知らないし、まして予算感なんて分かりようもナッシング。

※無論、情報に強い国の組織もポツポツある。でも省のレベルで開発能力死んでるなんてこともある。

国家の規模で言うと億の話にもなるけど、普通の中小企業とか普通の大企業ではもうすこし小さいレベルでそういうことが起きている。それは不勉強を起因としている。正確に表現すれば、「もとを辿れば誰かの不勉強を起因としている」ということだ。

無駄に人を稼働させて無駄に金をかけて取り回しづらいシステムを構築している。設計もガバガバでインターフェースがギチギチ。んで筋悪な技術をもってして構築したもんですから保守開発に余計なコストがかかる。

◆論破するため

技術力無いのに自信満々のヒヨコのプライドと鼻っ柱を折ろうと思ったとき。ニコニコとお茶飲みながらしっとり会話するだけでそれが成せる。

あるいは、大した能力も無いくせしてその自覚がない年上を「なにいってんすかww」って煽れる。それでも強行して失敗した年上に「言いましたよね?」「俺修正しちゃっていいですか?」って煽れる。わからせろ。

逆の視点からすれば、自分の知らない領域が沢山あるのだということについて知覚できるから傲慢にならずに済む。謙虚でいられる。だからそもそも論破されずに済む。

◆生きてゆくため

その場にとどまるためには全力で走り続けなければならない。

赤の女王仮説 - Wikipedia

これもまた技術に限ったことではないが、技術の面から。

ITに限らず、技術は絶対にいつか陳腐化してしまう。陳腐化しづらい領域と瞬く間に陳腐化する領域があって、当然ながら陳腐化しづらい領域を勉強する必要がある。が、陳腐化しやすさの判断、言い換えると、その技術の筋が良いか悪いかは「その技術以外の技術」について知っていないと実感できない。

悩ましいな。広く勉強する必要がある。

あと、陳腐化した技術しか知らない弛んだマネージャーはとっても面倒くさい。コミュニケーションするのに体感10倍の時間がかかる。それは共通の言語を持ってないからで、言葉の意味を説明する手間が発生する。技術者を扱うには技術を知らんといかんのだ。それはチームリーダーもそう。本物の自信と根拠ある自負をもってして人を制御するものです。

マネジメント手法についても要勉強だよね全員。プロジェクトというものに関わる全人類がマネジメント手法について勉強する必要ある。マネジメントもある種の技術で、IT技術パワー以上に重要と言ってもいい。マジに義務教育にすべき。どれだけの不幸を消せることか。

またはなしが逸れた。

つまり、技術力ってものはお金と同じで持ってるだけだとその相対的価値が減少しちゃうんです。論理的には、持ってる技術の相対的価値が減少するとおちんぎんも減少するはずだ。だからアップデートしやがれ。

※終身雇用の年功序列な会社だとおちんぎん減少しない。おちんちんの伸び率には関わるだろうけど、果たして人事評価する人が技術者Aの持つ技術力を定量的に評価できたものだろうか。甚だ疑問です。

◆勉強の仕方

▼活字を読む能力のない人

ここまで読めたんなら問題ないと思うけども、活字を読めない人がいる。それを恥ずかしいと思って読んだふりで誤魔化そうと試みる人もいる。そういう人はまず児童文学とか読めばいいんじゃないかい。冗談じゃなく。文字を読みきるという成功体験を積むべき。

日本語不自由民が多すぎる。

▼きっかけを掴む

「技術ニュース」って検索すれば?物理媒体で言えばgihyoの雑誌を適当に購読するとか。

興味あることじゃなくて、興味ないことを知るのが重要なんだと思う。

知らないワードを文脈から推測して適当に読み飛ばしつつ、いつの日かその読み飛ばしたワードがどこかにコネクトされる日を願っている僕です。

▼無料の技術書

英語が基本なんだけども日本語訳の動きも活発。「無料 技術書」で検索すればかなり出てくるよ。

▼手を動かす

新しい言語を勉強するときは「いやだぁ」「あぁあ やだぁ」って呻きながらでいいんで、コードを写経したりすればいい。読んでわかった気になるのはあんまりオススメしない。

▼勉強会に参加する

俺は陰キャですから参加したことねぇけど、陽キャが勉強会を開催したりしておる。乱交したりするんだそうな。connpassってサイトを見るよろし。

▼SlackとかDiscord

俺はローンウルフですから参加したことねぇけど、SlackとかDiscordにコミュニティが落ちてたりするから、そこに参加すれば乱交できるらしい。

▼ブログを書く

思ったこととか書くんでもいいし、ポエムならポエムとして書けばいい。正しいことを書いてもいいし、自信ないならそう前置きしてから自信満々に説明しよう。間違ったこと書いたんならごめんなさいして迅速に修正する。

書くと、書いてる途中でわかんないことが見えてくる。たぶん。人によるんだろうか。普通は疑問がわいてきたりするんじゃないの?

◆大切にしてほしいこと

各個別技術の勉強をするのも結構毛だらけ猫灰だらけなんだけど、概念的なとこの勉強もしていただきたい。「~であるべき論」だな。

「どう書く」「どう組む」「どう置く」「どう回す」「どう仕事する」「どう生きる」

の話。世間の流行とか自分の譲れない部分をしっかりと把握せねばなるまい。技術の結晶はそういう支持基板上に成長する。支持基盤がなければ使い物にはならない。変なおじさん(SMRKN)になる未来しかない。

あと、コミュニケーション技術。未熟だ。本当の思いやりを持っていなかったとしても、口先三寸の取り繕いで良好なコミュニケーションができるはずだ。コミュニケーションもモテも技術だ。例えば持ち前の性格とかセンスでコミュニケーション能力が足りなくなるんなら、パターンを勉強すればいいじゃん。どっかで。

コミュニケーションべたが不幸な気持ちを生んでるって気づいてない人の多いこと。「あの人はこうだから」って人のせいにする野郎が多い。違うだろ?お前が決めろ。お前が舵を取れ。明日からお前がCaptain of the Ship。

◆結論

仕事サボってでも勉強しろ。

※非公式