プログラマーとスーパープログラマー

スーパープログラマーとは

プログラマーには、普通プログラマーの3倍の早さで組める人がいる。
この人を「スーパープログラマー」と呼ぶ。
なお、私自身は普通プログラマーである。

個人的な体験による遭遇率

個人的な環境下での経験だが、バリバリの開発系の会社で働いていた時にスーパープログラマーだと思ったのは、およそ20年間で約2人である。それだけスーパープログラマーは少ない。
「約2人」としたのは、スーパープログラマーには明確な定義が無いためだ。
なお、マネジメント中心の会社では、当然ながらスーパープログラマーとの遭遇率はゼロである。

スーパープログラマーたる所以(ゆえん)

冒頭に普通のプログラマーの”3倍早い”と謳っているは「とあるアニメに出てくる赤い彗星をもじってる」と思われるかもしれない。
しかし自分なりに考えた根拠はある。(本人から直接聞いた訳では無いため、推測が入る。)
まず、スーパープログラマーは、プログラムの完成形を素早く頭の中に完璧なイメージとして描いている。
だからスーパープログラマーの作業は、頭の中のイメージ通り「プログラムを組む(1.0)」これに尽きる。
※カッコ内は論理的な作業工数を表す。

一方普通のプログラマーも頭の中にある程度のイメージはあるものの、そこまで明確ではない。
そのため、プログラミングは大抵以下のような作業となる。
「プログラムを組む(1.0)」→「不満な箇所を削除する(0.5)」→「考える(0.5)」→「再度プログラムを組む(1.0)」

上記の作業工数を比較すると、以下のようになる。
・スーパープログラマー:1.0
・普通プログラマー:1.0 + 0.5 + 0.5 + 1.0 = 3.0
やや強引な根拠であるが、普通プログラマーは3倍の工数を使うことになる。

結論

プログラミングには、以下の要素を持ってプログラムしている。
(1) 完成時にどうなっているか
(2) 個別の関数(メソッド)のインターフェース
(3) 各関数(メソッド)間のつながり
(4) ある程度の拡張性
(5) プログラムを組む

スーパープログラマーは、頭の回転が早く、プログラムにも精通しているため、
上記(1)~(4)までの完成イメージ言い換えれば、「論理プログラム」の確定までが早い。
要するに「天才肌」なのだ。
なので、もしもスーパープログラマーと遭遇しても「真似してやってみよう」などとは思わないことだ。
プログラミング上達のコツは、「自分のペースで地道にやる」のが一番の近道だからである。

まとめ

・スーパープログラマーは存在するが、滅多にお目に掛かれない。
・推測ではあるが、プログラミングが早い人は初めからイメージ通りに作成して「やり直し」が発生しない。
・なろうと思ってなれるものではない。自分のペースでプログラミングを楽しみながら上達を目指そう。