勉強することで何がいいのか実力者がいないことでデメリットはあるか

「この辺を勉強してどういう良いことがあったか教えて欲しい。」というコメントがついてた。
良いこととして、一番は、まあ勉強するのが楽しくなった、ということなのだけど、それは循環してるので置いておいて。


実務的に一番いいのは、プログラムを組むのが楽になったということ。
とくに、本質的な間違いが少なくなっていくので、後戻りが減るというのが楽。組んでみたけど動かない、途中でそれ以上組めなくなる、というのが少ない。まあ、ミスはあるので、そこの修正はするけど。
あと、できないことができないとわかりやすい。そのデータの持ち方でそのデータ数でその処理ではその精度の要求は満たせない、ということが原理的に判断しやすくなる。なので、むだな努力をしない。そして、どの条件を緩和すれば要求が満たせるかにも気づきやすい。
初見のライブラリや言語、ツールの理解が早くなる、とかも。
もちろん、前のエントリにも書いたように「明示的に勉強してなくてもできる人はいる」わけだけど、やはり勉強したほうが精度はあがるし、自信ももてる。


ところで、普通にプログラム組んでても、ちょっと込み入ったところで3重ループを越えたり、ループ階層が可変だったりするとアルゴリズムとして考えるの大事だよねーと思うんだけど、「アルゴリズム組む人は職種が別」ってほど特殊なんだろうか。


そして、話は変わって、コメントで気になった「真の実力を持った人が少ないことが世間でネックになっていると言われると、そうかなあ?と思う。 」という件について。


実のところ前のエントリを書くきっかけにもなったのですけど、 @okachimachiorz1さんの話に「優秀な人の生産性が高い、というよりも低い人が多すぎる」というのがあります。
『SIエンジニアの自分戦略 -急がば回れ、選ぶなら近道-』に参加してきた #devlove - Shinya’s Daily Report
そのあとに続いて、この、「生産性が低い人が多すぎる」状況に業界がフィットしている現状が語られています。
そういう、「生産性が低い人が多すぎる」状況を前提に業界ができあがって、この状態で均衡して、プログラマの能力をあげるというインセンティブがなくなっていると言えると思います。能力が高くなくても同じ人月単価をもらえるわけですから。さらにいうと、できない人が時間をかけたほうが、売り上げは大きくなるわけです。


現状を見ると、そういう状況があって、業界トータルでのソフトウェア開発能力は低く保たれていたと思わざるを得ません。
これは世間でネックになっていると思います。


前のエントリは、結構ストイックに書いていたので、「トップレベルのプログラマの話」だと思われるのもしかたないのですけど、実際のところの目的は、「生産性が低い人」のボトムのレベルをあげることです。問題意識のある人に少し高めの目的を持ってもらうことで、そこにつながるより多くの人にちょっとした目的をもってもらう、これが前のエントリの意図でした。
数万人の人の目に触れたようで、おそらく「わかんないけど、やったほうがいいのかなー」という人も千人単位でいるんじゃないかと思います。そうすると、まあ、そこにつながる多くの人が、ちょっとだけ勉強することに興味をもつ。


そうすることで、底辺のレベルが少しあがって、ある日お手伝いに行った現場で、「全体像わかるドキュメントとかないですか?」「システムが大きすぎてだれも全体像わかりません!(キリッ」というやりとりだとか、「先週一緒に作業してた彼は今週はこれないから、代わりに一人つれてきときましたね!来週はまた彼が来ます!」だとかいう悲しい出来事に遭遇することが少しでも減らせれば。
そういった、結構レベルの低い話でしたとさ。