パスワードを忘れた? アカウント作成
12050292 story
ビジネス

「プログラマーは凄腕か役立たずのどちらか」という神話 89

ストーリー by hylom
そんな神話があったのか 部門より
headless 曰く、

やや旧聞となるが、プログラマーの才能に関する「神話(myth)」について、Djangoの貢献者として知られるJacob Kaplan-Moss氏がPyCon 2015の基調講演で語ったそうだ(YouTubeLWN.netSlashdot)。

実際のところ、プログラミング能力を測定する体系だった方法は存在しない。そのため、プログラマーは凄腕プログラマーと役に立たないプログラマーに二分され、中間はほとんど存在しないとする神話が生まれたのだという。もしも何らかの方法でプログラマーのプログラミング能力を測定できれば、正規分布に近い分布になるはずだと主張するKaplan-Moss氏によれば、バイモーダル分布であるとする神話を信じることは、無意味であるだけでなく危険を伴うとのこと。このような神話はロックスターかニンジャでなければプログラミングができないという幻想を生み出し、多くの人々をプログラミングから遠ざける。

プログラミングを仕事にしようと決めた人は、それに情熱を傾けなければならないと考えるようになるが、実際にはプログラミングは情熱でも才能でもないという。プログラミングの仕事では単にコードを書くだけでなく、設計やコミュニケーション、ドキュメント作成、デバッグなどさまざまなスキルが必要となる。これらのスキルを身に着け、仕事がこなせるレベルで十分だと考えれば、プログラミングを始めるときの敷居は低くなる。

また、才能の神話はIT業界に蔓延する性や人種による偏見、ホモフォビア、差別などといった、さまざまな問題の一つなのだという。才能の神話は「才能にあふれる嫌な奴(brilliant asshole)の神話」に再キャストされる。つまり、たとえどんなに嫌な奴でも、みんな我慢して一緒に働かなくてはならない、非常に仕事の能力の高い「10xプログラマー」が存在するという神話だ。しかし、プログラミング能力が正規分布しているとすれば、これらの人々も特別な能力を持っているわけではない。たとえ特別であることを認めるとしても、数多くの開発者が離れていくことになるとのことだ。このとき(動画の22分50秒あたり)、ステージでは「The "brilliant asshole"」と書かれたスライドに中指を立てたLinus Torvalds氏の写真が映し出され、会場を沸かせた。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2015年05月07日 17時45分 (#2810180)
    • by Anonymous Coward on 2015年05月08日 3時50分 (#2810413)

      江添氏も訳出の最後で指摘していますが、2つの山が出来るのは、ふたこぶラクダ論文("The caml has two humps") [mdx.ac.uk]の実測に基づくものですよね。(元コメの記事末尾に江添氏による概要 [blogspot.jp]へのリンク有り)
      これを都市伝説というのなら、実験の設計の悪さを指摘するか、新たなデータを出すべきだと思うんですが。

      能力が10倍差あるほうの話も、都市伝説では無くてIBMでの研究結果(より知られているのはデマルコの本のやつ?)ですよね。

      元々の話の筋は、「プログラミング能力」は複数の能力の集まりだから、「コーディング能力」だけを理由に人々をプログラミングから遠ざけるな、というもので、それ自体は至極真っ当なものですが、実測されたデータの無視・正規性の非合理で強引な仮定などが内容をスポイルしているように思えます。

      親コメント
  • by Anonymous Coward on 2015年05月07日 21時21分 (#2810293)

    有能と無能だけで 普通がないの
    でも有能だったらいくつかの
    魔法を見せるわ 本当よ

  • by Anonymous Coward on 2015年05月07日 16時39分 (#2810133)

    単純に、中央あたりの人は語るに足りないというだけだ。
    #クソコードかいて、クソして寝てればいい

    • by Anonymous Coward

      中央あたりの人は、
      上に対しては、絶対に超えられない壁を認識するし、
      下に対しては、こんなクソコード全部使い物にならねーよ、って矛盾に押しつぶされて
      いろいろと限界を感じて他業種に移るんだと思う。

      #移ったけど戻ってきてクソコード書いてる。

      • by Anonymous Coward

        クソが分かるプログラマはまだ救いがあると信じたい。

  • プログラミングって色々なスキルがあるというのは書かれているけど、これが0-1でできるできないみたいなものなので、それぞれが壁となり、乗り越えた枚数でスキルが決まるんじゃないかな? で、そうすると壁を超える確率が1/2であれば二項分布で正規分布っぽくなるはずなんだけど、実際は大卒プログラマーがほとんどの壁を越えてないのが問題だったりして。 平均が小さいポアソン分布になるのかな?
    --
    -- 哀れな日本人専用(sorry Japanese only) --
  • by Anonymous Coward on 2015年05月07日 19時23分 (#2810235)

    論理的思考ができないというか、手続き的な思考ができない致命的に適性のない人はどうしたって0(もしくはマイナス)のあたりに山作るから、全体で正規分布はしないだろう。

    根本的に未経験の人もスケールに当てはめれば0がゴロゴロ居るわけだし。

    • by Anonymous Coward

      数学の難しい試験と似た感じですよね

      センター試験みたいに問題のほうをうまく調整してやれば正規分布に近づくでしょうけど、東京大学入試の2次試験の数学あたりだと正規分布するような問題じゃないわけで

  • by Anonymous Coward on 2015年05月07日 21時05分 (#2810288)

    個人的には二峰性でもおかしくないんじゃないかなと思う。
    経験値が概ね能力に比例するような業務(例えば、難度は低いが多岐にわたるもの)は正規分布に近づくような気がするけど、学習において低くないハードルを越えていかないと能力が獲得できないような業務だと、最初の方のハードルで躓くグループと普通にハードルを越えていけるグループに分かれてしまい、結果として二峰性(あるいはそれ以上のピーク)になるんじゃないかなと。

    で、プログラミングってある程度の理解力がないと吸収していけないと思うんですよ。
    素養の無い人に習得させようとしても全然ダメだし、辛うじて入口を突破してもロジカルに組めない人ってのが山のようにいる。
    でもロジカルに組めるようになれば、あとは経験値に比例して能力が高くなる。

    ・そもそもスタートラインにすら立てなかった群(非プログラマ)
    ・スタートラインは超えたが、論理的に考えるに至らず自分でプログラムをスクラッチできない群(ダメなプログラマ)
    ・プログラミングを自分のものにした群。分布のピークは概ね勤続年数の最頻値あたり?(普通以上のプログラマ)

    てな具合に、職業プログラマとしては後者2群で二峰性になってたりするんじゃないかなと。

  • by Anonymous Coward on 2015年05月07日 22時01分 (#2810315)

    コードを書く上で必要な知識を理解しているかしていないかで一見したコードの品質が大きく変わるからでは?
    理解というものは「ある程度理解していて、その知識をある程度使える」といった状態になりにくいから、結果的に凄腕か役立たずかのどちらかしかない(ようにみえる)。

    しっかり必要な知識を得ている人たちの間での、コードの書く速さや大規模なプロジェクトにおける整然さの違いには純粋にプログラマーの質が現れるのでは。

    #もっとも、その必要な知識を持っているプログラマーの数なんてたかがしれないけど。

  • by Anonymous Coward on 2015年05月07日 16時40分 (#2810134)

    として就職した人が一時期多かったためリアルに10倍差とか存在した結果神話になった気がする
    ※とりあえず営業マンとできる営業マンでも同じでしょ?

  • by Anonymous Coward on 2015年05月07日 16時40分 (#2810135)

    できるプログラマは、生産性で 10倍の差があるってのは、たまに聞く話だけど、
    これは 10倍のひと=凄腕、その他=役立たず、でその間がないっていう神話なのかな?

    中間はほとんど存在しないと感じたことはないけど、
    IT業界だとプログラミングが好きで入った一握りのひとと、出来ればプログラムを
    書かずに仕事出来ないかと考えてる大勢っていう図式になりがちなのは確かな気がする。

    • by Anonymous Coward on 2015年05月07日 17時35分 (#2810166)

      いわゆる80:20の法則を仕事に当てはめると、優秀な2割の人が全体の8割の仕事をしているということになり、
      一人あたりの仕事量では4倍ではなく16倍の差がある事になる。
      ということで、プログラマにかぎらず、出来る人と出来ない人は10~20倍ぐらいの能力差があっても不思議はないように感じる。

      親コメント
    • by Anonymous Coward on 2015年05月07日 17時52分 (#2810186)

      他人のソースみると、わくわくするよね?って質問するんだけど
      大抵、わくわくするとそうでもないの回答なんだけど

      「人のソースなんて見ません!全部自分で書きます。」って言った人がいて
      一瞬、凄い人か?!っと思ったが、ソースが読めないだけだった・・・

      親コメント
      • >他人のソースみると、わくわくするよね?って質問するんだけど
        >大抵、わくわくするとそうでもないの回答なんだけど

        普通「(そのソースを書いた)人(が誰か)による」じゃないか?

        親コメント
        • 絶品なソースを見たときの、ほー!(感嘆)ってな感じは当たり前ですが、
          クソみたいなソースの解析も時間に余裕があれば楽しめるますよ。

          途中まで考えたあげくに放棄して固定値でイレギュラーな処理が書かれていると
          クスッってならない?

          #時間が無いと心がすさむけどね

          親コメント
    • by Anonymous Coward

      できる奴とできない奴の差が10倍なんじゃなかったっけ?
      普通の人との差は3倍ぐらい。
      できないを1にすると普通3、できるが9 or 10とか、そんな感じ?

      • by Anonymous Coward

        できないを1にすると普通-0.1、できるが-0.9 or -1とか、そんな感じだと思います。

        これは一般のプログラミングの場合で特殊な物理シミュレーションなど内容が高度になっていくと倍率は無限大倍(1週間でできる仕事でもできない奴だと10年与えてもできない、まず何のために何を考えて何を作らないといけないのかわからない)になりますね、他に例えば排他制御間違うと人命に関わるようなものも意味は違いますが倍率無限大というのは同じでしょう。

    • by Anonymous Coward

      プログラミングなんて誰でもできる(という神話、キーパンチャーをイメージしているのか)のでてきとーにアサイン

      プログラミングだって設計なんだからできる者とできない者がいる

      生産性の比は無限大

    • by Anonymous Coward

      実感としては、凄腕とその他大勢の間は10倍、凄腕と最低の間は -10倍だなあ。
      # 「役立たず」は褒め過ぎ、正しくは「足手まとい」。

    • by Anonymous Coward

      普通は軽く30倍(以上)ですね。
      #神話じゃなくて、ほとんど定説。神話は「プログラミングなんて誰にでも出来る」の方。

      世の中にはそれ以下の底辺糞プログラマーもいるので、
      最大で何千倍なのか何万倍なのか、はたまたマイナス100倍
      なのかはあまり本質じゃありません。

    • by Anonymous Coward

      日本のITドカタの場合は純粋なプログラミング能力よりも
      いかに客先の業務に詳しいかが鍵なので、
      プログラマという括りは不適切な気がする。

    • by Anonymous Coward

      あーそれだ、なんか読んでてもやもやしてた。
      中間が存在しないなんて話じゃないよね。

    • by Anonymous Coward

      お前程度が書いたものは誰でも読めると言われたので
      普段書いてるようなC++のテンプレート駆使したのを書いたら読めないからと却下された懐かしい思い出
      (その後書き換えたものとの動作速度は7~8倍程度違ったなぁ…)

  • by Anonymous Coward on 2015年05月07日 16時44分 (#2810137)

    客の後出しでの仕様変更とか営業がやらかした無茶な予算とか、そういう無理難題を押しつけられるのが日常茶飯な業界なんだからさ
    そういう無茶ぶりでも対応できて納品できるのは「凄腕プログラマー」だし
    対応できなければ、それは成果が提出できない「役に立たないプログラマー」じゃないか

  • by Anonymous Coward on 2015年05月07日 16時47分 (#2810139)

    漫画家とあまり変わらんね。
    絵を描くかコードを書くかの違いは大きいけど。

  • プログラマなんて裏方なんだから、余程のハッカーか、ネタになる位の素人しか話題に出てこないのでは?

  • by Anonymous Coward on 2015年05月07日 16時55分 (#2810143)

    > 才能の神話はIT業界に蔓延する性や人種による偏見、ホモフォビア、差別などといった、さまざまな問題の一つなのだという。
    > 才能の神話は「才能にあふれる嫌な奴(brilliant asshole)の神話」に再キャストされる。

    原文読んでないので誤解かもしれないけど、
    コンピュータはプログラマーの性別・人種・信条・趣味・嗜好・宗教等で差別したりせず、組んだ通りに動くので、
    対人関係が重要な業種に比べれば問題は少ないと思うんだけど。

    まぁ逆に考えれば、そういうのを笠に着て優越感に浸りたいひとにとっては、「才能にあふれる嫌な奴」が溢れる世界なのかも
    しれんが。

  • by Anonymous Coward on 2015年05月07日 16時55分 (#2810144)

    パンならば、旨いパン1個と、普通パン10個と、不味いパン1個があると、不味いやつ以外はそれなりに評価され消費される。
    プログラムの場合は同じことをするのに素晴しいプログラム1個と、普通のプログラム10個と、駄目なプログラム1個があった場合には、素晴しいプログラムだけが評価され使われる、残りは一律にクズ扱いも致し方無し。
    コピーで増やせるからね。常に最高のやつと比較される運命にある。

  • 違いは
    「飯を食うよりプログラミングが好き」

    「プログラミングよりは飯食って寝る方が好き」
    って程度の差なんだと思う。

    • by Anonymous Coward

      > 「プログラミングよりは飯食って寝る方が好き」
      今日の Twitter のトレンドに上がってる これ [twitter.com]を思い出した。

  • by Anonymous Coward on 2015年05月07日 17時06分 (#2810151)

    誰かドラゴンボールでたとえてくれないか

  • by Anonymous Coward on 2015年05月07日 17時12分 (#2810153)

    俺の知らぬ間に働いてくれたのは小人さんじゃなくてニンジャだったのか
    ありがとうニンジャ!

    ロックスターはあれか?
    二人以上いると「音楽性の違い」的理由でプロジェクト解散してしまうん?

  • 『プログラミング能力が正規分布しているとすれば』

    なんでもいいけど、証明してくれ。
    すると仮定すれば、であるから
    つまり なのである(結論としてYESだ)。
    って 論法がおかしい。

    結論としてYESであるというためには仮定が正しいことを証明しなければならないが
    冒頭にできないって書いてある。

    • by Anonymous Coward

      になっているという話。

      • by Anonymous Coward

        えーっと、それは全てのプログラミングはPerlに収束されるという話なのか?

  • by Anonymous Coward on 2015年05月07日 17時36分 (#2810168)

    タレコミを読んでる途中でLinusを思い浮かべてたら最後に出てきてワロタ

    • by Anonymous Coward

      Theoちゃんじゃないんだ…

  • by Anonymous Coward on 2015年05月07日 19時06分 (#2810230)

    > PyCon 2015の基調講演

    いろいろ書いてるけど、要は Python なら、凄腕のひとが突拍子もないコードを書くことも
    なく、あまり出来ないひとが路頭に迷うこともなく、みんな仲良く開発できるよって宣伝?

    #別に Python ディスりたいわけじゃないけど、趣意が分かりにくかったので。

typodupeerror

ハッカーとクラッカーの違い。大してないと思います -- あるアレゲ

読み込み中...