技術力というものが正直よくわからない

このエントリを読んでいた。過去に身につけた技術力を用いて惰性でお金が稼げてしまうがそれがいつまで続くかわからなくて不安、、といった技術職あるあるの問題である。

私自身はソフトウェアエンジニアという職種ではないのだが、色々あってそれなりにコードを書くことが出来る。とはいえ確かにこのエントリで書かれているように過去に身につけたものを利用してなんとなくコードを書くことが多く、実際としてそれでなんとかなってしまうことが多い。

このエントリにも出てきた Flutter はなんとなく触ったことがあって幾つかのアプリを作ったことがあるのだが、個人的には他の言語やフレームワークと大差なく(開発者の体験としてはとても良かった)、これといって新しい技術を学んだような気持ちにはなれなかった。

最低限のコードが書けるということもあり、このスキルは維持したいなとは思っていて最低限の学習はなんとなく行なっている。技術書はなんとなく読んでいるし、面白そうな言語やフレームワークやライブラリがあればなんとなく触っていたりする。とはいえそれらの多くはこれまでに身につけた何かを組み合わせれば十分に対処可能なものであって、初めて Hello World を書いた時のような新しい発見は殆どない。「なんかちょっと便利になったな」くらいの気持ちが大半である。それゆえに、昔取った杵柄で案外なんとかなってしまう感がとてもある。

ソフトウェアエンジニアの人と話していると、将来生き残っていくために「技術力を身につけたい」という話題がよく出てくる。しかしながらこの「技術力」というものが私にはいまだによくわからなかったりする。

JavaScript が書けることが技術力というのであれば、そんなものは数時間どころか数分の勉強で「書くだけ」なら問題なくできてしまう。Webアプリケーションを作る上で実務で使うレベルのコードであれば、経験者であれば数日勉強すればその環境に合わせたコードを書くことはさして難しくない。というよりも、Webアプリケーションを作る上では超絶技巧プログラミングが必要とされることは殆どなく、技巧的なコードの出番は多くない。

もちろん、超絶技巧プログラミングが出来ることはとても良いことだと思うのだけど、それが技術力なのかといわれるとよくわからなくなる。なぜなら、その超絶技巧を使って何かの問題が解決されることは稀であって、もっと簡単な何かで解決することが可能だからだ。とした時に必要なものは、超絶技巧ではなくて、簡単に解決可能な何かを選択する能力だったりする。

とはいえこの「簡単に可決可能な何かを選択する能力」が技術力だとするのは少し違和感がある。

このように考えてしまうと、技術力というものがよくわからなくなるし、技術力を高めたいといって日々コードを書くだけの行為と技術力というものはさして関係がないようにも思えてくる。


よくわからないと言っていても何ら建設的ではないので、現時点での自分の考えをここからは記していく。

技術力という言葉にはいくつかの意味が含まれているように思える。私が考えるのは大きく下記の3つである。

  • 特定言語における超絶技巧プログラミングのような、一般的に想像されるコーディングの技術力が高い状態

  • 特定の問題を解決するための手段としてのプログラミング言語やフレームワーク等を素早く身につけるための基礎力

  • 特定の問題を技術によって解決するための筋道を作ることが出来る能力

下にいくにつれて抽象度が上がっていくのだが、観測範囲内の多くの技術者は超絶技巧プログラミングを技術力と考えているように思えている。とはいえこの部分は機械に代替される可能性が高い。超絶技巧プログラミングの多くはどこかのライブラリに含まれるようになり、もしくは、Copilot のように何故だか自動で生み出されるようになる未来は容易に想像できる。

もちろんこれらのスキルがあるに越したことはないが、一般的な技術者全員が必要かというと、多分そうではない。なぜなら、現実の問題を解決するには少し遠いからだ。現実の問題を解決するのであれば、これまでに身につけた基礎力をベースとして問題の特定と解決策の選定を効果的に行えるようになる方が良さそうである。

とすると、「より抽象度の高い問題を解決するための何か」を技術力と捉えることが良さそうなのだが、とした時に必要なことはプログラミングについて詳しくなるだけでなく、その問題のドメインについて詳しくなるだとか、複数人が関わるプロジェクトをうまく回していく能力だとか、解決すべき問題とその適切な解決策を見極める能力だとか、どちらかといえばいわゆるプログラミングとはほど遠い分野の学習が必要になるのではないだろうか。

とするのであれば、プログラミングの練習だけを技術力向上のために使うのは悪手であって、もう少し視野を広く見るというか、画面の中ではなく画面の外に目を向けることが結果的に技術力の向上に繋がるのではないだろうか。

最初にあげたエントリに対して私なりのアンサーを書くとするならば、昔取った杵柄でなんとかなっているということは基礎的な部分はなんとかなっているということであって、いわゆるプログラミングの勉強ではなくて、実社会からの学びに目を向けることで結果的に広義の技術力が身についていくのではないかと思う。

おわり。


P.S. これはポエムなので、本当の意味で技術力が高い人が読むとpgrpgrとなってしまう気がする。


まいにちのご飯代として、よろしくお願いします。