「プログラマーは凄腕か役立たずのどちらか」という神話 89
そんな神話があったのか 部門より
やや旧聞となるが、プログラマーの才能に関する「神話(myth)」について、Djangoの貢献者として知られるJacob Kaplan-Moss氏がPyCon 2015の基調講演で語ったそうだ(YouTube、LWN.net、Slashdot)。
実際のところ、プログラミング能力を測定する体系だった方法は存在しない。そのため、プログラマーは凄腕プログラマーと役に立たないプログラマーに二分され、中間はほとんど存在しないとする神話が生まれたのだという。もしも何らかの方法でプログラマーのプログラミング能力を測定できれば、正規分布に近い分布になるはずだと主張するKaplan-Moss氏によれば、バイモーダル分布であるとする神話を信じることは、無意味であるだけでなく危険を伴うとのこと。このような神話はロックスターかニンジャでなければプログラミングができないという幻想を生み出し、多くの人々をプログラミングから遠ざける。
プログラミングを仕事にしようと決めた人は、それに情熱を傾けなければならないと考えるようになるが、実際にはプログラミングは情熱でも才能でもないという。プログラミングの仕事では単にコードを書くだけでなく、設計やコミュニケーション、ドキュメント作成、デバッグなどさまざまなスキルが必要となる。これらのスキルを身に着け、仕事がこなせるレベルで十分だと考えれば、プログラミングを始めるときの敷居は低くなる。
また、才能の神話はIT業界に蔓延する性や人種による偏見、ホモフォビア、差別などといった、さまざまな問題の一つなのだという。才能の神話は「才能にあふれる嫌な奴(brilliant asshole)の神話」に再キャストされる。つまり、たとえどんなに嫌な奴でも、みんな我慢して一緒に働かなくてはならない、非常に仕事の能力の高い「10xプログラマー」が存在するという神話だ。しかし、プログラミング能力が正規分布しているとすれば、これらの人々も特別な能力を持っているわけではない。たとえ特別であることを認めるとしても、数多くの開発者が離れていくことになるとのことだ。このとき(動画の22分50秒あたり)、ステージでは「The "brilliant asshole"」と書かれたスライドに中指を立てたLinus Torvalds氏の写真が映し出され、会場を沸かせた。
ezoe 氏が訳出してる (スコア:4, 参考になる)
http://cpplover.blogspot.jp/2015/05/jacob-kaplan-mosspycon-2015.html [blogspot.jp]
Re:ezoe 氏が訳出してる (スコア:1)
江添氏も訳出の最後で指摘していますが、2つの山が出来るのは、ふたこぶラクダ論文("The caml has two humps") [mdx.ac.uk]の実測に基づくものですよね。(元コメの記事末尾に江添氏による概要 [blogspot.jp]へのリンク有り)
これを都市伝説というのなら、実験の設計の悪さを指摘するか、新たなデータを出すべきだと思うんですが。
能力が10倍差あるほうの話も、都市伝説では無くてIBMでの研究結果(より知られているのはデマルコの本のやつ?)ですよね。
元々の話の筋は、「プログラミング能力」は複数の能力の集まりだから、「コーディング能力」だけを理由に人々をプログラミングから遠ざけるな、というもので、それ自体は至極真っ当なものですが、実測されたデータの無視・正規性の非合理で強引な仮定などが内容をスポイルしているように思えます。
プログラマは女の子だった! (スコア:3, おもしろおかしい)
有能と無能だけで 普通がないの
でも有能だったらいくつかの
魔法を見せるわ 本当よ
Re:プログラマは女の子だった! (スコア:1)
傷つく事をおそれていちゃだめよ
恋はフィーリング、愛はタッチタイピング
さりげなく。
正規分布してるから特異な人が居るんじゃないか (スコア:2, すばらしい洞察)
単純に、中央あたりの人は語るに足りないというだけだ。
#クソコードかいて、クソして寝てればいい
Re: (スコア:0)
中央あたりの人は、
上に対しては、絶対に超えられない壁を認識するし、
下に対しては、こんなクソコード全部使い物にならねーよ、って矛盾に押しつぶされて
いろいろと限界を感じて他業種に移るんだと思う。
#移ったけど戻ってきてクソコード書いてる。
Re: (スコア:0)
クソが分かるプログラマはまだ救いがあると信じたい。
能力=超えた壁の枚数? (スコア:1)
-- 哀れな日本人専用(sorry Japanese only) --
Re:能力=超えた壁の枚数? (スコア:1)
-- 哀れな日本人専用(sorry Japanese only) --
凄腕のほうはともかく (スコア:1)
論理的思考ができないというか、手続き的な思考ができない致命的に適性のない人はどうしたって0(もしくはマイナス)のあたりに山作るから、全体で正規分布はしないだろう。
根本的に未経験の人もスケールに当てはめれば0がゴロゴロ居るわけだし。
Re: (スコア:0)
数学の難しい試験と似た感じですよね
センター試験みたいに問題のほうをうまく調整してやれば正規分布に近づくでしょうけど、東京大学入試の2次試験の数学あたりだと正規分布するような問題じゃないわけで
二峰性 (スコア:1)
個人的には二峰性でもおかしくないんじゃないかなと思う。
経験値が概ね能力に比例するような業務(例えば、難度は低いが多岐にわたるもの)は正規分布に近づくような気がするけど、学習において低くないハードルを越えていかないと能力が獲得できないような業務だと、最初の方のハードルで躓くグループと普通にハードルを越えていけるグループに分かれてしまい、結果として二峰性(あるいはそれ以上のピーク)になるんじゃないかなと。
で、プログラミングってある程度の理解力がないと吸収していけないと思うんですよ。
素養の無い人に習得させようとしても全然ダメだし、辛うじて入口を突破してもロジカルに組めない人ってのが山のようにいる。
でもロジカルに組めるようになれば、あとは経験値に比例して能力が高くなる。
・そもそもスタートラインにすら立てなかった群(非プログラマ)
・スタートラインは超えたが、論理的に考えるに至らず自分でプログラムをスクラッチできない群(ダメなプログラマ)
・プログラミングを自分のものにした群。分布のピークは概ね勤続年数の最頻値あたり?(普通以上のプログラマ)
てな具合に、職業プログラマとしては後者2群で二峰性になってたりするんじゃないかなと。
Re:二峰性 (スコア:2)
# あぁ..
Yet Another Reason (スコア:1)
コードを書く上で必要な知識を理解しているかしていないかで一見したコードの品質が大きく変わるからでは?
理解というものは「ある程度理解していて、その知識をある程度使える」といった状態になりにくいから、結果的に凄腕か役立たずかのどちらかしかない(ようにみえる)。
しっかり必要な知識を得ている人たちの間での、コードの書く速さや大規模なプロジェクトにおける整然さの違いには純粋にプログラマーの質が現れるのでは。
#もっとも、その必要な知識を持っているプログラマーの数なんてたかがしれないけど。
とりあえずプログラマ (スコア:0)
として就職した人が一時期多かったためリアルに10倍差とか存在した結果神話になった気がする
※とりあえず営業マンとできる営業マンでも同じでしょ?
生産性 10倍の神話の派生版? (スコア:0)
できるプログラマは、生産性で 10倍の差があるってのは、たまに聞く話だけど、
これは 10倍のひと=凄腕、その他=役立たず、でその間がないっていう神話なのかな?
中間はほとんど存在しないと感じたことはないけど、
IT業界だとプログラミングが好きで入った一握りのひとと、出来ればプログラムを
書かずに仕事出来ないかと考えてる大勢っていう図式になりがちなのは確かな気がする。
Re:生産性 10倍の神話の派生版? (スコア:1)
いわゆる80:20の法則を仕事に当てはめると、優秀な2割の人が全体の8割の仕事をしているということになり、
一人あたりの仕事量では4倍ではなく16倍の差がある事になる。
ということで、プログラマにかぎらず、出来る人と出来ない人は10~20倍ぐらいの能力差があっても不思議はないように感じる。
Re:生産性 10倍の神話の派生版? (スコア:1)
他人のソースみると、わくわくするよね?って質問するんだけど
大抵、わくわくするとそうでもないの回答なんだけど
「人のソースなんて見ません!全部自分で書きます。」って言った人がいて
一瞬、凄い人か?!っと思ったが、ソースが読めないだけだった・・・
Re:生産性 10倍の神話の派生版? (スコア:1)
>他人のソースみると、わくわくするよね?って質問するんだけど
>大抵、わくわくするとそうでもないの回答なんだけど
普通「(そのソースを書いた)人(が誰か)による」じゃないか?
Re:生産性 10倍の神話の派生版? (スコア:1)
絶品なソースを見たときの、ほー!(感嘆)ってな感じは当たり前ですが、
クソみたいなソースの解析も時間に余裕があれば楽しめるますよ。
途中まで考えたあげくに放棄して固定値でイレギュラーな処理が書かれていると
クスッってならない?
#時間が無いと心がすさむけどね
Re: (スコア:0)
できる奴とできない奴の差が10倍なんじゃなかったっけ?
普通の人との差は3倍ぐらい。
できないを1にすると普通3、できるが9 or 10とか、そんな感じ?
Re: (スコア:0)
できないを1にすると普通-0.1、できるが-0.9 or -1とか、そんな感じだと思います。
これは一般のプログラミングの場合で特殊な物理シミュレーションなど内容が高度になっていくと倍率は無限大倍(1週間でできる仕事でもできない奴だと10年与えてもできない、まず何のために何を考えて何を作らないといけないのかわからない)になりますね、他に例えば排他制御間違うと人命に関わるようなものも意味は違いますが倍率無限大というのは同じでしょう。
Re:生産性 10倍の神話の派生版? (スコア:1)
>倍率は無限大倍
出来ないプログラマは生産性が負の数になるから、倍率も負の数になるよ!
Re: (スコア:0)
プログラミングなんて誰でもできる(という神話、キーパンチャーをイメージしているのか)のでてきとーにアサイン
+
プログラミングだって設計なんだからできる者とできない者がいる
↓
生産性の比は無限大
Re: (スコア:0)
実感としては、凄腕とその他大勢の間は10倍、凄腕と最低の間は -10倍だなあ。
# 「役立たず」は褒め過ぎ、正しくは「足手まとい」。
Re: (スコア:0)
普通は軽く30倍(以上)ですね。
#神話じゃなくて、ほとんど定説。神話は「プログラミングなんて誰にでも出来る」の方。
世の中にはそれ以下の底辺糞プログラマーもいるので、
最大で何千倍なのか何万倍なのか、はたまたマイナス100倍
なのかはあまり本質じゃありません。
Re: (スコア:0)
日本のITドカタの場合は純粋なプログラミング能力よりも
いかに客先の業務に詳しいかが鍵なので、
プログラマという括りは不適切な気がする。
Re: (スコア:0)
プログラマの定年は30歳言われてる国だしね
最近は高齢化のせいか5歳くらい上がったみたいだけど
Re:生産性 10倍の神話の派生版? (スコア:3)
自分は40過ぎだが、50過ぎても普通に組んでる人はいるぞ。
Re: (スコア:0)
あーそれだ、なんか読んでてもやもやしてた。
中間が存在しないなんて話じゃないよね。
Re: (スコア:0)
お前程度が書いたものは誰でも読めると言われたので
普段書いてるようなC++のテンプレート駆使したのを書いたら読めないからと却下された懐かしい思い出
(その後書き換えたものとの動作速度は7~8倍程度違ったなぁ…)
えっ (スコア:0)
客の後出しでの仕様変更とか営業がやらかした無茶な予算とか、そういう無理難題を押しつけられるのが日常茶飯な業界なんだからさ
そういう無茶ぶりでも対応できて納品できるのは「凄腕プログラマー」だし
対応できなければ、それは成果が提出できない「役に立たないプログラマー」じゃないか
コミックアーティスト (スコア:0)
漫画家とあまり変わらんね。
絵を描くかコードを書くかの違いは大きいけど。
Re: (スコア:0)
とはいえ、食える専業漫画家と食える専業プログラマなら、どう考えても後者の方が多いだろうと思う。
Re:コミックアーティスト (スコア:1)
いや、カニバリストの嗜好を言われても...。
中間は存在しないんじゃなくて、目立たないだけじゃないの? (スコア:0)
プログラマなんて裏方なんだから、余程のハッカーか、ネタになる位の素人しか話題に出てこないのでは?
コンピュータは差別しない (スコア:0)
> 才能の神話はIT業界に蔓延する性や人種による偏見、ホモフォビア、差別などといった、さまざまな問題の一つなのだという。
> 才能の神話は「才能にあふれる嫌な奴(brilliant asshole)の神話」に再キャストされる。
原文読んでないので誤解かもしれないけど、
コンピュータはプログラマーの性別・人種・信条・趣味・嗜好・宗教等で差別したりせず、組んだ通りに動くので、
対人関係が重要な業種に比べれば問題は少ないと思うんだけど。
まぁ逆に考えれば、そういうのを笠に着て優越感に浸りたいひとにとっては、「才能にあふれる嫌な奴」が溢れる世界なのかも
しれんが。
プログラムの特性もあるよ (スコア:0)
パンならば、旨いパン1個と、普通パン10個と、不味いパン1個があると、不味いやつ以外はそれなりに評価され消費される。
プログラムの場合は同じことをするのに素晴しいプログラム1個と、普通のプログラム10個と、駄目なプログラム1個があった場合には、素晴しいプログラムだけが評価され使われる、残りは一律にクズ扱いも致し方無し。
コピーで増やせるからね。常に最高のやつと比較される運命にある。
たぶんね、基本的な能力はそこまで変わらないんだと思う (スコア:0)
違いは
「飯を食うよりプログラミングが好き」
か
「プログラミングよりは飯食って寝る方が好き」
って程度の差なんだと思う。
Re: (スコア:0)
> 「プログラミングよりは飯食って寝る方が好き」
今日の Twitter のトレンドに上がってる これ [twitter.com]を思い出した。
長いなぁ (スコア:0)
誰かドラゴンボールでたとえてくれないか
Re:長いなぁ (スコア:1)
Re: (スコア:0)
神龍に先に願いを言った人が勝ち
ロックスターかニンジャ (スコア:0)
俺の知らぬ間に働いてくれたのは小人さんじゃなくてニンジャだったのか
ありがとうニンジャ!
ロックスターはあれか?
二人以上いると「音楽性の違い」的理由でプロジェクト解散してしまうん?
正規分布にならない統計はこの世に存在しないのだろうか? (スコア:0)
『プログラミング能力が正規分布しているとすれば』
なんでもいいけど、証明してくれ。
すると仮定すれば、であるから
つまり なのである(結論としてYESだ)。
って 論法がおかしい。
結論としてYESであるというためには仮定が正しいことを証明しなければならないが
冒頭にできないって書いてある。
フタコブラクダ (スコア:0)
になっているという話。
Re: (スコア:0)
えーっと、それは全てのプログラミングはPerlに収束されるという話なのか?
やっぱりLinus (スコア:0)
タレコミを読んでる途中でLinusを思い浮かべてたら最後に出てきてワロタ
Re: (スコア:0)
Theoちゃんじゃないんだ…
Python ? (スコア:0)
> PyCon 2015の基調講演
いろいろ書いてるけど、要は Python なら、凄腕のひとが突拍子もないコードを書くことも
なく、あまり出来ないひとが路頭に迷うこともなく、みんな仲良く開発できるよって宣伝?
#別に Python ディスりたいわけじゃないけど、趣意が分かりにくかったので。