この記事は、「ten986 Advent Calendar 2022」の 5 日目の記事です。
https://qiita.com/advent-calendar/2022/ten986
「技術力」というワード
よく「技術力が高い」とか「技術力を上げたい」とかいうフレーズを聞く。
ここで指されている「技術力」には、かなり多くの種類があるのではないか? という気持ちになっている。
そこで、「技術力」と思われるものを列挙してみることにする。
「技術力」の種類
太字になっているところは、「技術力」と呼べそうなものです。
君だけの「技術力」を作って、他の人の思想とバトらせよう。
なるべく思いついたのは書いたけど、まだまだありそう。
(主にコードベースに対する)知識
コードを書けることに対して「技術力」と結びつけていることが多いなあと思う。
- 各言語、ライブラリ、フレームワークに対する知識
- いわゆる「ミクロ」な知識
- たとえばある言語やフレームワークに詳しければ、最近だとひとまず飯が食える
- つまり、 知識の深さ
- ただ、業界によっては流行り廃りが激しいので、これだけだと2~3年程度しか保たないと思う
- 「あるフレームワークに対する」設計やパフォーマンス改善なども、この辺りに含まれそう
- 「ミクロ」な知識とはいえ、様々な種類かつ深い知識もあるし、知っておいた方がいいものは多い
- つまり、 知識の広さ
- Dockerとかはどの分野でも使うだろうし
- AWSも「ミクロ」と言えるのか?あまりに深い知識が求められるものではあるが
- この点では 新しい知識を取り入れる力 とかもあるだろう
- 言語などによらない、普遍的な知識
- いわゆる「マクロ」な知識
- いくつかの言語や分野を習得するなり、CSを学ぶなりすることで、得られる(と言われていそう)
- アルゴリズムもそうだし、先に挙げた「設計やパフォーマンス改善」も、フレームワークを超えた設計指針もある
- どうせSOLID原則とかどこでも使えるでしょ(?)
- 長くエンジニアでいるためには覚えておくべきだし、このような普遍的な知識を得ていれば、「ミクロ」な知識は吸収しやすくなる
- この普遍的な知識の中でも、たとえばアルゴリズムに詳しいなど、特定の分野の深い知識 があることもある
開発時における能力
- コードリーディング能力
- 既存のコードを 正確に読み解く力
- 既存のコードの 「どこを参考にすべきか」を理解する力
- 既存のコードの 「実装背景」を把握する力
- コーディング速度
- 単純な タイピング速度
- コーディング速度を上げるためのさまざまな工夫
- 知識の取り出しの速さ
- 正確なコードを書く力
- バグらないコードを書く 論理的思考力
- 書いたコードに対して、バグを発見する、バグの修正指針を見つける デバッグ力
製品開発の上での能力
- ドメイン知識をコードに落とし込む能力
- 特定の知識をどのような形で表すか?といったことは業務では求められる
- そのための ドメイン知識を把握する力
- 自分の実装を説明できる能力
- 正しいコードを書くのにも似ている
- そもそも、根拠のあるコードを書く能力
- そして、根拠を日本語で相手に噛み砕いて説明できる能力
今日の個人ブログ開発
markdown → ReactElement へのクライアントサイドでやるのイヤだなー、という気持ちになって、うまいこと Server Component とかでやれないかなーと調査中。
Next.js 13 になったものの、今 app ディレクトリを使っていないのと、13 になってからか pages で Server Component を使う方法が消えたのかよく分からないが、あまり情報が出てこなくて困っている。
素直に app ディレクトリに移植するとよいか?まだ beta 版だったような気がするけど。
ということで、見える進捗はなし。