プログラミング周辺知識の整理をしてみたい。

プログラミング初心者を脱する時って、プログラミング言語の文法仕様なんてのはプログラミングの世界ではほんの一部分の知識でしかないことを自覚する時だと思うんですよね。どんな知識があるかまとめようかなと。

アルゴリズム

 データ構造とアルゴリズムってやつですね。競プロみたいなやつ

データベース系

 上のアルゴリズム系の知識を用いてデータを効率よく利用するのがデータベースですね。とはいっても中身を追うのはほぼ不可能で、外部キー制約だとかその他パフォーマンスにまつわるいろんな周辺知識を勉強する必要がありますね。

ライブラリ系

 プログラミング言語の比較って半分ライブラリの比較でもあります。まぁどの言語でも似たようなライブラリがそろってますが、Numpyとかは特別に覚える必要がある気がします。

フレームワーク

 ライブラリのライブラリ。ドキュメントをとリリースノートを読み込む力が大切。フレームワークの中身を追いかけることは大きなプログラムを書く時の参考になりそうです。

ネットワーク系

 OSI参照モデルとかに始まるもろもろの知識。エッジコンピューティングとかそれにまつわる部分では必須の知識だと思います。

プログラミングのイディオム、パターン

 ラムダ式とか、関数型であったり、いろんな柔軟な書き方が紹介されてますよね。

低レイヤ

ハードウェア

 CPUとかメモリとかストレージとか。如何に読み書きの速度の違いとかは意識する必要があると思います。

命令セットなど

 llvmとかアセンブリとかOSとか。情報工学の基礎の浮動点小数とかの中身とかそこらへんは知っておいた方が良いとおもいます。

開発・運用系

バーチャルマシン

 Hyper-vとかkvmとかDockerとか。基本的には本番環境と開発環境をそろえる技術って言ってもよいと思います。

CI/DI

 Jenkinsとか。テスト回してデプロイしたり。

テスト

 プログラミング言語の機能として十分なものが用意されたりとかもしてますが、テスト設計はそれはそれで一種のスキルではあります

クラウド

 今はもう必須のスキルっていっていいと思います。ただ、体系化された知識とかいうよりかはしっかりドキュメントを読めるかって部分が大切かなと思います。

少し古い気がしますが、結構よくまとまってる気がします。

https://postd.cc/programmer-competency-matrix/

これをいい感じに図示したいなぁ。