2021 年の段階で僕が知らないこと
「何でもは知らないわよ。知ってることだけ。」
はじめに
こんにちは、しゅんです。この記事では 実は僕がよく知らない技術について挙げていきます。 実はこのブログを開設したかった理由もこの記事を書くためです。 もともと 2018 年の段階で私が知らないこと という React のコアコミッターの方が書いた記事がありまして、 これを読んだときに、「僕もこんな記事を書きたい!」と思い現在に至ります。 こちらの記事には、
まず最初に、良い技術者は全ての技術について知っていないといけないと思われている節がある。非現実的だ。数十個のライブラリが列挙されている「技術を取得する為のロードマップ」を見たことがあるか?便利な記事ではあるが、おじけづいてしまうよな。
さらに、どんなに経験を経ても、自分に自信がある時があれば、自信が持てなかったり(インポスター症候群)、自信過剰になってしまったり(ダニング=クルーガー効果)を行ったり来たりしてしまうものだ。これらは環境、仕事、人柄、同僚、精神状態、時間等、様々な要因に左右されてしまう。
経験のある技術者はそういった自身の不安をおおっぴらにすることで、初心者を勇気づけたりする。しかし、熟達しても不安を感じる外科医とメスを初めて触る人には天と地との差がある。
明らかに知識の差がある状態で「我々はみんな初心者だよ」と聞くのは時に空っぽに聞こえたりしてしまう。私が善意をもって励まそうとしても逆効果になったりするものだ。
それでもなお、経験者でさえ知識の差は多く存在する。この記事は私が持っている知識についてだ。そして、似たような立場にいる他の人もぜひ公開してみてほしい。しかし、自身の経験を軽んじるのはやめよう。
我々は知識の差を公表することができる。偽物と感じたり感じなかったりするかもしれない。それでも数年かけて得た知識や経験を活かすことができる。
とあります。別に僕は優れた技術者でも経験のある技術者でもなくどこにでも居る高専生なのですが、こんな僕の記事でも誰かの役に立てたらと思います。
前置きはこの辺にして、以下の技術が僕が未だに知らない技術です。
僕が未だに知らない技術
低レイヤ
いわゆるアセンブリとかその辺です。一応「動かして分かる CPU の作り方 10 講」という本を持っていて半分くらいは読んだのですが、論理回路のあたりで力尽きました。 学校で論理回路を学んだ今ならもう少し理解できそうなので暇があれば再挑戦したいです。
Linux
基本的なコマンドとかなら分かりますし、VPS を借りたら最初にしないといけないパッケージのアップデートとか SSH の設定とかなら分かります。 ただ、プロセスがどうとかシグナルがどうとかそのへんは全くわかりません。 もしもサーバーが死んだり攻撃を受けたたりしたときにどうやって復旧や診断をすればいいのかもわかりません。
ネットワーク
一応「マスタリング TCP/IP 入門編」は読みましたが、覚えているかは怪しいです。 各プロトコルの概要については理解した(と思う)のですが、それらがどのように協調しあって現在のインターネットが構成されているのかはよくわかりません。 来年のネットワークの授業があるので、もう少し体系立てて学びたいと思います。
暗号
公開鍵・秘密鍵の役割とか概要なら分かりますが、それ以上はわかりません。
アルゴリズム
各種ソートアルゴリズムや有名所のアルゴリズムの概要はなんとなく分かっていますが、それを実装しろと言われたら 100%できません。 AtCoder のレートも最高で茶色なのでもっと精進したいです。
設計
「Clearn Architecture」とか「エリック・エヴァンスのドメイン駆動設計」とかは読んだことがありますが、実践で使ったことがあるかと言われると怪しいです。 もともとあまり設計せずに作って、そこからどんどんリファクタリングしていく方式のほうが好きなので僕は根本的に設計に向いていない気がします。
アジャイル開発
短期間で次々にリリースしていくことは知っています。ただ詳細は知りません。
ネイティブアプリケーション
大昔 Swift を触ったのと 3mm くらい Ionic と React Native をやっていたのを抜きにすればネイティブアプリケーションの開発は一切の未経験です。 Web フロントエンドを専門にしている者として、少しくらいはやっておきたいと思っています。
アクセシビリティ
色とか<img>
タグのalt
attribute とかに気をつけないといけないのは知っていますが、WAI-ARIA とかはよく知りません。
Web Assembly
Rust を少しだけやっているので興味は持っていますがやったことはありません。 JavaScript と Web Assembly がどのように協調しているのかもよくわかりません。
機械学習
ずっと興味は持っているのですが、数学ゴリゴリなので怖気づいています。 見様見真似でライブラリ叩いて「機械学習!w」みたいなエセ機械学習エンジニアにはなりたくないのでちゃんと本買って勉強したいです。
Electron
使ったことがありません。
ブロックチェーン
聞いたことがあるだけ。
メタバース・NFT・Web3
全く知りません。よくセットで聞くような気がしますが…
最後に
以上が私の現時点で知らない技術です。今思い浮かばないだけでもっとあると思います。
ただ僕が無知を晒しただけのようにも見えますが、「 無知の知 」という言葉があるように自分が知らないということを知っているだけでも十分に価値があります。 知らない技術は学ばないといけないときに学べばいいのです。知らないということを知らないとそれすらもできません。
ただ知識を広げることは重要なので 2022 年にこの中の一つでも「知っている」と言えるように、「知らないこと」が一つでも増えるようにしていきたいと思います。
それでは、また。