pockestrap

Programmer's memo

なにもできない

静的解析

RuboCopのコードを書けるから、ASTをトラバースするコードを書くのは慣れているけどそれだけ。

電卓以上のパーサを書いたことがない。

型システムも何もわからない。TypeScriptでプログラムを書くことはできるけど、TypeScriptがどうやって型を解析しているのかは全然分かっていない。

プログラミング言語

前述したとおり電卓以上のパーサを書いたことがない。

言語を一通り実装したのもBrainfuckとWhitespaceぐらいしかない。

tokenize -> parse -> compile -> evaluate のような順で言語が実行されていくのは概念としては知っているけど、個別の具体的な実装は何もわからない。

書ける言語

Rubyは文法を書くのに困らない程度に把握しているしエコシステムもなんとなく分かっている。 ただ、このレベルまで理解している言語は他にはない。

TypeScriptは書くけど、エコシステムが全く分からなくて人が作った開発環境で開発しかしたことがない。 webpackの設定は何もわからない。 TypeScript/JavaScript関連のOSSにプルリクエストを投げるのは結構ハードルが高い。

Goも時々書くけどmoduleが入った辺りからのエコシステムは何もわからない。 CLIツールを作るのに使う程度で、Webアプリケーションの文脈では使ったことがない。 Goらしい書き方もできていないと思う。

これ以外の言語はまともに書いたことがない。

Rails

雰囲気でアプリケーション開発はできるけど、ベストプラクティス的なことは何もわからない。

フォームヘルパが一切覚えられない。

オブジェクト指向

雰囲気しかわからない。そろそろオブジェクト指向に関する本を読みたいと思って数年経った。

もちろん関数型プログラミングが分かるわけでもない。

Webフロントエンド

前述したとおり人が敷いたレールに乗っかって書くことはできるけど、それ以上のことはできない。

メンテナンス性の高いコンポーネント設計とかできない。

Reactを使っているから書くことはできる。VueやAngularJSは数年前に触ったきりで何も覚えていない。

アルゴリズム

AOJでプログラミングを学んだけど、構文やライブラリを覚えるのに精一杯でDP以上にむずかしい問題は解けない。 AtCoderはやったことがない。

O表記はなんとなく分かっているつもりでいる。

Linux

デスクトップLinuxを常用しているけど、ユーザーとして使えているだけでそれ以上のことはほとんど分かっていない。

システムコールというやつがなんなのか分かっていない。

データベース

データベーススペシャリストを持っているけど、正規化をする練習問題を解ける以上の能力はない。

SQLはselect, from, where以上のことが出てくるとわからなくなる。joinができない。

RDBMSのindexがどう実装されているのか分かっていない。

各種NoSQLをどう使いこなすかわからない。

データの量とパフォーマンスについての肌感がない。

ネットワーク

ネットワークスペシャリストに落ちまくった。何もわからない。 階層的なモデルになっていることは知っている。

DNSが全く何も分からない。浸透って何

セキュリティ

セキュリティスペシャリストの後の名前が長いやつの試験は合格した。 Webアプリケーションで絶対に抑えておかないとダメ、ぐらいの話は理解している。 詳しくはない。

インフラ

最近のトレンドとかは何もわからない。 AWSは仕事で使っているけど、インフラはあまり見ていないので基本的なことしかわからない。 それ以外のIaaSは使ったことがない。

デザイン

何もできない。CSSは書く度無力さを実感する。 Webページをきれいな見た目にする能力がない。どうやったらきれいになるのかもわからないし、分かったとしてもそれをCSSで実現する能力もない。

誰のためのデザイン?を読んで感動したけど内容はほとんど覚えていない。

英語

英会話に通って少し読み書き会話能力が上がった。 まともに英語教育を受けていないので未だに中学生レベルの文法がよくわからなくなる。疑問文のことを考えると3秒ぐらい脳が止まる。

ここに書いていないこと

何が分かっていないのかすらわからない。