Twitterで某45歳のおじさまがしょげていたので(誰とは言ってない)なんとなく。
さて、プログラマである当人は、自身の技術力のなさを嘆いていたようですが、そういえばプログラミングにおける技術力ってなんだろう?
知識のことであれば、あまり特定の知識というものは必要ない気がしています。
たとえば「オブジェクト指向言語における処理の流れ」とか、「プログラミングの基本的な作法」のような基礎知識はもちろん必要になりますが、他はそれほど必須ではない。
言語や使用するフレームワークなんかが時代に合わせてころころ変わることもあるこの業界、特定の何かに関する知識はあまり必須ではない気がしています。慣れてない言語は「リファレンス片手になら書ける」程度でもまあなんとかなるかな と。
アルゴリズムに関する理解であれば、それもまた今のプログラミングには必須ではなかったりすると思います。特にコンポーネントやライブラリのそろってきてる今、特に業務アプリについては「素材やその用法を理解し、自らの描いたシナリオ通りにそれらを組み立てる力」のほうが重要だと思ってます。
もし、これらが技術力なのであれば、技術力ってプログラミングに必須なんでしょうか?
もちろんあるに越したことはないし、それがあることが前提となってるドキュメントも多い。ただ、とりあえず技術力がなくても、プログラミングは十分できるし、やってれば自ずと技術力なんて身につくのではないか という気がします。
必要なのは、情報収集力と今期
それでもプログラマに必要なものはあります。情報収集力(と、できれば発信力)と、根気かな。
技術がどんどん変化するプログラミングの世界において、自分が持っている知識を過信せず、絶えず情報収集することは必要ですし、自分がどのように理解できたかを文章にする発信力も必要だと思います。
そしてあとは根気。やはりプログラミングをするにあたって、うまくいかないことはたくさんあります。欲しい情報がなかなか手に入らなかったり、英語だったりすることも多いです。(時間と相談した上でですが)粘ることは必要だと思います。
ただ、プログラミングに必須なのって、技術力より、どちらかというとこっちかな。情報収集力と根気さえあれば、案外どうにかなったりする。
プログラミングに必要な感覚は
昔であれば、ライブラリも充実していなかったり、実行環境も貧弱だったりで、アルゴリズムをすべて理解して1からコードを書かなければいけなかったことは、少なくなかったんだろうなと思いますが、今はそれほどでもない。前述のように既存のモジュールを組み合わせ、のり付けする程度のコードを書くだけでも、案外プログラミングはできたりします。
そのあたりも含めて、プログラミングって結局料理のようなもので。昔ならそば殻からそばを打つしか選択肢がなかったところ、市販の麺という選択肢が出てきたように、プログラミングも昔はアルゴリズムから自分で書くしか選択肢がなかったところ、半分以上を他のライブラリで補うこともできるようになってきたと思うのです。
その際必要な知識は、ライブラリのマニュアルに書かれた技術用語を理解することだけ。それ以上は結局必須のスキルではなくなったんだろうなと思います。あるにこしたことはないのですが。
プログラミングには数学の知識が必要と言いますが、どちらかというと数学より国語かな(もちろん数学に関する知識がないとできないことは、結構あるのですが)。周囲の人にわかるように説明したり、順序立てて物事を説明する能力が必要だと思います。それは日本語だろうが英語だろうがプログラム言語だろうが、あまり変わらない。
結局技術力だとか数学力だとか、いろいろスキルがなくて尻込みしている人がいれば、とりあえずやってみると良いんじゃないでしょうかね。案外それらの力がなくてもある程度の所まではいけるので。自分も数学力のなさなら自信がありますがここまではできたし。