プログラマーは誰もがなれるものではない? 140
ストーリー by hylom
プログラマー適性試験ってどんなのだろう 部門より
プログラマー適性試験ってどんなのだろう 部門より
eggy 曰く、
「プログラミングを学ぶのに適した脳のタイプ」というものがあり、「プログラミングは誰もができるものではない」といった格言があるそうだが、Ars Technica記事がこの格言の正当性をQ&Aで問いかけたところ、大半がその正当性を認めたとのこと(本家/.、Ars Technica記事)。
この記事で紹介されているRichard Bornat教授とRay Adams氏の論文によれば、学生らのプログラミング能力をグラフに表すと、「プログラミングのできる人」と「できない人」の2種類の人間があたかも存在するかの如く、2つの「釣り鐘状カーブ」に分かれるとのこと。しかもプログラミングの授業を開始する前に試験を行うことで、学生をこうした2つのグループにふるい分けることができるとしている。Ars TechnicaのQ&Aでは、格言の正当性はこうした研究論文によって証明されているとする意見に66票が集まった。
また、メンタルモデルを一貫して適用することができる能力の有無がプログラマーの資質に大きく関わるとするなどの他の論文には41票が集まった。一方の、誰でもプログラマーになれるとする意見にはたったの7票しか集まらなかったようだ。
機械オンチな人 (スコア:5, 興味深い)
プログラミングには抽象的なものを抽象的なまま頭に入れられるかとか、いろいろ
その人が持つ性質が必要なんだろうとは思うけど、
もっとベーシックなところで、自称機械オンチな人っていますよね。そういう人を見てると
仕組みだとか規則性だとかを軽々と無視してくれたりすることがあるので、おっと驚いたりしますよ。
いや、本人は無視しているつもりはないのかもしれないのかもしれないが、脳内でどういう変換が
行われたのかが、わからないというか。世界の捉え方が違うんですね、きっと。
そういう人はプログラミングは無論のこと、コンピュータにも馴染めないだろうなあと。
自分自身向いてないことは凄く実感してる (スコア:2)
が、プログラムを書く仕事にはつけている。
向いてないと実感するのはアルゴリズムとかを考えたり作ったり、効率化したりを考えるときかな。
その辺のことをやりだすと自分でも驚くほど途端に効率も質も落ちる。
この辺が向いてる向いてないに繋がってるような気がしてる。
Re:アルゴリズムって何? (スコア:1)
ディープ・ソートがあるじゃないか?
Copyright (c) 2001-2014 Parsley, All rights reserved.
元論文の方 (スコア:1)
元論文のリンクどこかで踏んだと思って過去記事みていたんだけど
コンピュータサイエンスの学位って、本当に必要? [srad.jp]のプログラミングできる人とできない人との間の深い溝 (スコア:4, 参考になる) [srad.jp]の書き込みの
http://d.hatena.ne.jp/masatoi/20090707/1246965336 [hatena.ne.jp]だった
学位って、本当に必要?のトピックでもイロイロ書かれているが、自分の経験でも代入の基礎を教えた後に元論文の様な時系列で起きる変数の内容変化に対して「受容」できる人とできない人に分かれてる感じはあった。
要するに納得いかない物は嫌いって事なんじゃないのかね。
Re:元論文の方 (スコア:2)
代入に関しては抽象度を上げたせいじゃないかと個人的には思えるんですが、どうですかね?
変数への代入というのはメモリやレジスタへの書き込みなので、それがわかってれば代入に
戸惑うことなど無いと思えるので。
抽象から入っていく分野って他にあまり無いですよ。たとえば電気と磁気の関係というのは
最終的には抽象的な概念の理解が必須になるわけですけど、まずは目に見える
コイルと磁石みたいなところを小学校からやるわけですよね。
コンピュータの場合でも、アセンブリ言語からやってれば代入などに戸惑うことはないでしょう。
8ビットCPUのアセンブリ言語なら1週間もあればマスターでき簡単なコードも書けるようになるので
そこから始めれば相当に理解が容易になるんでは。
高級言語はコーディングの効率を上げるために抽象度を上げているので、それをいきなり
習得させると、そこで門を狭めることになる。
考え方としては古いかもしれないけど、理解できないとか受容できない原因はそこに
ありそうな気がするけど。
虚弱には無理 (スコア:1)
あと、胃が弱い人も向いてない
#感受性が強いとか、繊細な人も向いてないかな
Re:虚弱には無理 (スコア:1)
でも
「If I wasn't hard, I wouldn't be alive. If I couldn't ever be gentle, I wouldn't deserve to be alive.」
(私立探偵フィリップ・マーロウのセリフ)
みたいな両方兼ね備えていないといけない側面もあったりして。バランスの問題ですけど。
そもそもここでいう資質って (スコア:1)
・サブルーチンを使う/使わない
・グローバル変数を適切に使う/使わない
・変数の使い方が上手/下手
・変な名前のクラスを多用する/しない
・コメント(実装意図)を書く/書かない
…とかそういうセンスのことなんじゃないの?
#逆に言えば、これさえ適切にできれば上手下手はうやむやにできそうな
#マじゃないから素人意見だけどID
Re:そもそもここでいう資質って (スコア:1)
そこはコーディング規約(ガイドライン化)とレビューである程度質を確保できます。
とはいえ、一度下請けに「(規約には沿ってませんが)これは個人的な書き方なので、問題ありません。」と平然と言われ、唖然としたことが…
料理のレシピ (スコア:1)
昔、先輩が、「料理のレシピをちゃんとかける人間はプログラムもできる」と言っていたなぁ。
頭や体で理解している手順や仕組みを言葉として書き下せるかが、ポイント。
Re:料理のレシピ (スコア:1)
料理とプログラミングは段取りという意味で、似ている部分があると思います。
ここの記事を読んでみて、とても共感できましたね。
優秀な主婦はイベント・ドリブン(event-driven)方式でパンを焼く
http://satoshi.blogs.com/life/2007/01/eventdriven.html [blogs.com]
あなたもプログラマーになれる(わけではない) (スコア:0)
プログラミングってのは創作活動の一種なんですかね?(自分はプログラマーではないのでわからないのですが)
だとしたら、適性がある、誰もができるものではない、というのはわかるような気がします。
Re: (スコア:0)
プログラミングってのは創作活動の一種なんですかね?(自分はプログラマーではないのでわからないのですが)
だとしたら、適性がある、誰もができるものではない、というのはわかるような気がします。
私もプログラマではないですが、プログラミング自体は創作活動とは別物であると思います。
プログラミングは、コーディングともいいますがこの意味では翻訳です。
創作活動は面白く意欲が湧くけれど、翻訳は面白くないです。
つまり適正ではなく意欲の問題があると思います。
Re:あなたもプログラマーになれる(わけではない) (スコア:5, すばらしい洞察)
プログラミングは普通に創作活動でしょ。
感覚的には数学の証明問題を問いてるのに近いかも。
ある命題(仕様)を与えられて、無限にある解き方のなかから自分で一つの解を選んで、その手法で実装するわけです。
プログラマーという人種は、できあがったコードを見て感動したり、書いたときのその人の気分やテンションも慮れます。
もちろんどんなコードでもってわけじゃないですが、それは小説や絵画なんかの他の分野の創作物でも同じこと。
優れた(あるいは酷い)コードを肴に酒ものめるし、語り草にもなりますよ。
「翻訳」になるような粒度の設計書があるなら、翻訳に近いことも出来るんでしょうけど、そんなレベルの設計書書く時間かけるなら実装も終わっちゃうし。ほとんどのプログラマーは翻訳みたいない仕事は下っ端がやるものとして嫌がります。
Re:あなたもプログラマーになれる(わけではない) (スコア:2)
ベーマガなんかに投稿してた頃は創作活動だと思ってたんですがね・・・・
社会人になってから、趣味と仕事は別物ってのを痛感しました。
#仮の締切、普通の締切、本当の締切、真の締切、限界の締切gesaku
Re:あなたもプログラマーになれる(わけではない) (スコア:1)
こういう投稿を見るとスラドはリーマンばかりになった [srad.jp]というのがとても説得力を持ってくるな。
それはともかく創作活動であるプログラミングとそうではないプログラミングがあるというだけの話だろ。
「趣味で仏像彫ってたときは創作活動だと思っていたがフィギュアの組み立て工場に入社して仕事との違いを思い知った」みたいな違和感。
Re:あなたもプログラマーになれる(わけではない) (スコア:1)
創作が好きか翻訳が好きかは、意欲の問題でなくまさに「適性」だと思いますが。
私は創作も翻訳もどちらも好きなので、プログラマーはまさに天職です。
Re:あなたもプログラマーになれる(わけではない) (スコア:1)
プログラミングは、コーディングともいいますがこの意味では翻訳です。
プログラミング : 計画を作る(設計/創作?)
コーディング : プログラム言語に変換する(翻訳)
で、プログラミング≠コーディングでは?
プログラマ = プログラミングをする人 ⇒ 創作活動?
コーダー = コーディングする人 ⇒翻訳作業?
# 直訳じゃない翻訳も立派な創作活動のような
Re: (スコア:0)
プログラミングってコーディングより広い範囲を指してる気がする。
コーディングは確かに翻訳みたいなもんだけど、プログラミングはもうちょっと広い設計とかも入ってね?
Re: (スコア:0)
プログラミングの範囲についてはよくもめるね。
大きく分けても「設計」、「コーディング」、「テスト、デバッグ」といった
工程に分かれるし、コーディング以降しかやらなくてもプログラマって
呼ばれてたりするし。
個人的には「設計」やるのがプログラマで、それ以外はIT土方って認識なんだけど。
Re:仕様のバグ (スコア:1)
誤りだけどわかりやすいよ。
仕様そのものに矛盾があったり、想定漏れがあったり。
仕様どおり実装すると使い物にならなかったり。
Re:仕様のバグ (スコア:1)
いいえ、より上位の欲求を満足させるに失敗した成果物を、「バグがある」といいます。
従って、
運用のバグ、実装のバグ、仕様のバグ、設計のバグ、要求のバグ… があり得るのです。
# と考えるようにしている。
Re:仕様のバグ むしろ人間や組織のバグの方が。。。。 (スコア:1)
? バグがあったら済まさないのでは?
「これはバグではない」なら、済ませてしまったことになると思うが。
Re:あなたもプログラマーになれる(わけではない) (スコア:2)
Re: (スコア:0)
私もプログラマではないですが、プログラミング自体は創作活動とは別物であると思います。
プログラミングは、コーディングともいいますがこの意味では翻訳です。
創作活動は面白く意欲が湧くけれど、翻訳は面白くないです。
あってるようで違っている気が。
母国語が日本語の人が頭の中で考えた小説を文に起こす時は英語にしたら
その人は小説家では無くて翻訳家になるの?
Re: (スコア:0)
翻訳の原本はどこにある想定のたとえなんでしょうか?
Re: (スコア:0)
#翻訳者に謝罪しろ。
翻訳にもまあいろいろありまして。
ある文章を翻訳するのにどのような単語を選択するかとか、
きちんと翻訳されているのにちょっとした遊びが入っているとか。
コーディングに関して言えば、機能の実装方法だとか最適化のしやすさだとか。
たしかに差は作りにくいけど確実に存在していて、そこを追求できる人は面白さも感じ取れます。
Re:あなたもプログラマーになれる(わけではない) (スコア:1)
ですね。
翻訳した文には翻訳者の著作権が付きますからね。
翻訳に創造性が皆無なら著作権が生じるのは不当になっちゃいます。
普通の文章にも創造性のあるものからないものまでさまざま。
翻訳にも様々。
プログラムにも設計にも。
そして適性にも。
あたりまえっちゃあたりまえですね。
Re: (スコア:0)
勉強したからといって誰もが弁護士や医者になれるわけじゃないし。
練習したからといって誰もがプロ野球選手やJリーガーになれるわけじゃないし。
誰でもなれる職業って何だろう?
Re:あなたもプログラマーになれる(わけではない) (スコア:2)
なれる職業(就職などができる)と,
業務を遂行できる職業で大分違ってくるような
消去法 (スコア:2)
私は、医者や弁護士やスポーツ選手はもちろんですが、営業にもなれない。
残された道として、プログラマーしか思いつかなかったので、プログラマーになった。コーディングだけじゃなく、企画や設計もやりますが。
# 若い頃の勉強/修行次第では、電子回路の設計とか、何かしらの職人にはなれたかもしれないけど。
誰でもなれるお仕事 (スコア:1)
占い師と政治屋
~パタポン教徒~
Re:誰でもなれるお仕事 (スコア:2)
いや、別に対面に限らず
ネットで週の十二星座占い垂れ流すだけの「占い師」さんも
実際に居るわけでして。
さらに最近では「スピリチュアル」やら「霊感系」が流行りなので
ぶっちゃけ知識・技術が無くてもできるお仕事に…
・名乗った瞬間に就職できる(稼げるかは別として)
・必須の前提知識が無い
・免許・資格も不要
であれば「誰でもなれる」といってしまってよいかと思います
~パタポン教徒~
Re: (スコア:0)
海外でのプログラマって言葉は日本のSEに近いです。
だから、日本で一般的に言うプログラマは単なるコーダーですけど、
海外のプログラマは創作活動をする人だと思いますよ。
Re: (スコア:0)
>海外でのプログラマって言葉は日本のSEに近いです。
これは違うでしょ。プログラマはあくまでもプログラマ。
会社組織だと、業務内容はほぼプログラミングだけど呼称はエンジニアで、
・エンジニア(無印)
・シニア・エンジニア
・プリンシパル・エンジニア
とか、階級が上がっていったりすることも。
どのレベルのプログラミング? (スコア:0)
コピペだけでほとんどの仕事が済むような事務処理のプログラミングと、独創的な未知のアルゴリズムが必要とされるようなプログラミング。
前者はほとんどの人ができるようになると思うが、後者はほんの一握りの人しかできないのではなかろうか?
Re:どのレベルのプログラミング? (スコア:2)
> コピペだけでほとんどの仕事が済むような事務処理のプログラミング
コピペが大半としても、そのつなぎ目(?)のようなとことか、ちょっとした修正、変更箇所に、プログラマーの筋(あるいは、勘どころ)の良し悪しが出てくるので、ある程度の素質は必要と感じます。
-------- izyu
Re:どのレベルのプログラミング? (スコア:1)
「独創的な未知のアルゴリズムが必要とされるようなプログラミング」は「ほんの一握りの人にしかできない」のは当たり前でしょう。
多くの人ができるのなら独創的な未知のアルゴリズムではないのだから。
Re: (スコア:0)
誰でも書けるような駄文は「独創的な未知の文」と言えるかどうかですね
Re: (スコア:0)
まったくで。言葉遊びでしかない。
「格言があるそうだが」 (スコア:0)
人間には2種類いる系の凡庸な表現に思えるんですけど、これ一般的な格言なんですかね。
Re:「格言があるそうだが」 (スコア:1)
人間は大きく2つに分けたら死ぬ
# Twitterネタ
Re:「格言があるそうだが」 (スコア:1)
社会的には・・・ (スコア:0)
人間扱いされないことに耐える気力と嘘ときれいごとの峻別ができる理性があれば誰にでも就ける職業ではないでしょうか。
しかしもの扱いされて黙っていられないときがいつかやってくる。
Re:指導方法に問題があるとは思わないのか (スコア:1)
先天的って言っても生まれながらの脳の構造が~とかそこまで考えての話じゃなくて
こう、適当に学生とか(社会人とか)捕まえていざプログラムを学ばせようとした時に
代入とか条件分岐とかサブルーチンとかを容易に学び利用できる人と
いっくら教えても使えないとか仕様から外れたものしか作れない人が居るよね、
程度の話だと思いましょうよ。
「幼い頃からタイプに合わせた教育を行えば」誰でもできるようになるのかもしれませんけど、そこまでの話じゃないんじゃないかな。
Re:指導方法に問題があるとは思わないのか (スコア:1)
ごめんなさい、「先天的という話じゃなく」と読み替えてください。
分かっていたはずなのに変なこと書いちゃいました。ボケてますね。すみません。
Re:指導方法に問題があるとは思わないのか (スコア:2)
試験のクラス平均点が赤点ラインを下回ったり・・・・・
#8次元ほどの配列を平然と使ってたが、引き継いだ後輩がパニックになってたり・・・・
適任じゃない面接担当を無理矢理カウントするの? (スコア:1)
うまいこといったとドヤ顔をなさったりしませんように。
:誰でも面接担当にはなれるけど
なり手が他にいないから面接担当者(であれ他の何であれ)になる/やらされることとその仕事をきちんとこなす能力を認められることは別でしょ?
Re:概念だとわかりにくいので。 (スコア:1)
「差額が出たら2や9で割る」というのを経験やノウハウとして知っていても、その理由をロジカルに把握できている人は案外少なそうな気がするな。そういった内容を具体的な理屈に落としこめる、そして「11で割る」などの別パターンまで発想ができるような人は良い設計ができそう。
> すごいクレバーな方法を思い付いても、後から分かりやすく第三者に可読性の高いコードを書く方がいい気もする
状況に応じて求められるプログラムの内容も違うだろうね。おねえさん [youtube.com]を救うべく効率的に処理するアルゴリズムを書きたい状況もだってあるだろうし。
ただ、効率的に処理ができるプログラムを書く能力も、保守する対象のメンバーに合わせた可読性の高いコードを書く能力も、どちらも「プログラミング能力」と呼ばれそうだけれど、資質は少し違う気がするな。
Re:つまり (スコア:2)
>誰でもなれる訳じゃないけど需要は満たしているってことでは?
ここは「誰でもなれる訳じゃないけど、(そいつら低レベルな奴でも)需要は満たしているってことでは?」という意味だよね?
なら答は「満たしてない」だ。
満たしてるなら、そいつらの尻ぬぐいしてトラブル解決することが、こんなに求められるはずがないから。