プログラマのコードの生産性は何によって決まるのか

タイトルはいくらか誇大に書いてますw

以下では、もう少し因子?を絞って書きます。
要は地頭(頭の良さ)の部分ですね。

前提

・知識や経験は同じものとする

本論

ぶっちゃけて言ってしまうと私はコード書くのは遅い方だと思います(同じだけの経験・蓄積のある人間で比べれば)。

じゃあ、その差はなんで生まれるのか自分なりに分析してみたことがあるのですが(論文とかまで調べたわけではないです)、大雑把にくくれば地頭の出来とかになるのかなと思うのですが、それだと大雑把過ぎるし、地頭といってもいろんな要素があるし、IQが高ければ生産性が高いの?って言うと、なんか違うような気がしたんですよね。まあ、他の人のIQなんて知らないので、気がしたってのもいい加減な話なのですが。

で、結局、私が考えた限りでは、ワーキングメモリの量が、生産性を決める因子?として大きいのではないかとという結論に至りました。

ja.wikipedia.org

なお、この記事を書く時にぐぐってみましたが、日本語圏だと、以下のQiita記事でもワーキングメモリに言及しているのを見つけました。

qiita.com
 
自分の場合、おそらくワーキングメモリがあまり大きくないので、コード書く時に定義済みの関数や変数をいちいち見返したりするのに結構時間を食っている気がします。
また、コードベースがそれなりに大きいとソースファイルの数も多くなってると思うのですが、さっき確認したソースファイルの中身、どんなだったっけな、とか忘れて、読み返したりも多い気がします。

プログラマって、実はコード書いてる時間より、他人のコードを読んでる時間の方が多かったりする、とかいう話もあったりしますが(要出典)、上記と同じようなことが起きるので、これもやはりワーキングメモリの多寡でパフォーマンスが変わるのではないかと思います。
(なお、ワーキングメモリは鍛えることが一応でき、Qiita記事で言及されているNバック課題とかいうが一つの方法で、私もそれができるソフトだかサイトだかで1-2週間ほどトレーニングを試みたことがありますが、面倒くさくなってやらなくなってしまいました)

しかし、そういう人間を助けてくれる強い味方もいて、まあ、IDEってやつですね。
クラスやオブジェクトのメンバ補完であるとか、開いているファイル内で定義されている関数や変数を脇のペイン?とかに出してくれるのも助かりますね。
変数名・関数名の補完もしてくれますし(IDEじゃなくても、できますけど)。
標準ライブラリや、import することで(importというキーワードを利用しない言語は読みかえて下さい)使えるクラス名や関数名なんかも最近は補完して、よろしくimportしてくれたりします(確か)。

ただ、この手のIDEでのサポートって静的型付け言語の方がやりやすくて(IDEがコード解析やらなんやらしやすい)、動的型付けだと例えばPythonIDEの PyCharm とかかなり良くできていますが、静的型付け言語と比べるといくらか(結構?)落ちます。
私はどちらかというと静的型付け言語の方が好きなのですが、IDEでのサポートの受けやすさってのも、あまり意識したことなかったですが、理由としてあるのかもしれません。

あと、知名度の高いようなトッププログラマ(?)が、IDEとかあまり使ってなくて、EmacsVimとかにこだわるのは、そもそもIDEによるサポートとかあまり必要のないワーキングメモリの持ち主だから、なんてこともあるのかなとか思いました。

特に良いオチはないのですが、以上です。

いや違うだろ!などコメントあればどしどしお寄せください!

余談:
IQ値の多寡とワーキングメモリの多寡って相関はありそうですが、どれぐらいあるんでしょうねー

追記:
ちゃんとぐぐったら日本語のWebページでもこの手の話が既にいくつかあったので関連ページとして貼っておきます
プログラミングの効率アップの鍵はワーキングメモリだった | リバティドック
プログラムのアルゴリズムを理解するのって脳のワーキングメモリが結構重... - Yahoo!知恵袋
プログラミング学習と脳の使い方~本当に正しい学習してるのか?