ソフトウェアエンジニアの基礎体力と呼べるものがあると思う。筋力があるとか、夜間もコードを書きつづけるとか、あるいは一流の思考法とかでもなく、もっとプリミティブで身体的な部分の話。
たとえばタイピング能力。タイピングが早ければコードを書くスピードがあがる。思考速度が追いつかなければ速くても意味はないかもしれないけれど、常に思考しながらキーボードを叩くわけではないし、タイピングが速く正確であることに越したことはない。
ソフトウェアやエディタを操作する効率も基礎体力だと言える。ショートカットキーを駆使できるとかテキストエディタを効率的に使って素早く編集できるとか。
ソフトウェアエンジニアであれば、テキストデータを発見・加工する能力も基礎体力だろう。構造化されていないテキストデータを受け取って、最終的に作り上げたいデータを思い描き、その間のオペレーションを構築してゆく力。エディタやツールのオペレーション能力でカバーできることもあれば、grepや正規表現といったユビキタスな技術の応用で実現できることもあれば、お気に入りの言語で書き捨てのスクリプトを素早く書くとか、今時ならばLLMに適切なプロンプトを与える能力もこれに近そう。
エンジニアリングに関する知識や経験とは関係なく、ソフトウェアの言語がなんであるとか、どんなエディタを使うとかとは独立して鍛えていける点はこれらに共通してる。
これらの基礎体力を養うのは、ものによっては一朝一夕にはいかないかもしれない。ものによってはほんの少しの習得コストで余裕で10年以上役に立つものもある。ショートカットキーの習得とか。卑近な例でウェブアクセシビリティでいうと、スクリーンリーダーをカジュアル立ち上げる基礎体力はものすごく重要だ。
若いうちにこういう基礎体力をつけておくのは長期的にはすさまじい複利効果を生み出すと思う。だけど、あまり言語化されたものを見たことがないし、これを鍛えるための書籍とかも、あるんだろうか? あるなら読んでみたい。
これらの基礎体力の有無によってソフトウェアに対する考え方すらも変わってくるような気が最近している。うまく言語化できないけど、基礎体力が不十分なエンジニアほど「DRY」に書きたがるんじゃないか? ということだ。基礎体力が備わっていれば、繰り返しのコードがあっても、繰り返しそれぞれに共通の修正を加えることは容易なのだから、DRYにすべき場合、そうでない場合を冷静に見極められる。反対にそうでないエンジニアは、タイピング量を減らしてくれるDRYに過度に期待して、なんでも共通化したり、「短く書ける」ことにやたらと価値を見出しちゃったりする。
そんな気がする、っていうおはなし。