というのは本当でしょうか?
http://cpplover.blogspot.jp/2012/05/60.html
プログラミングできる人とできない人との間の深い溝
http://d.hatena.ne.jp/masatoi/20090707/1246965336
確かに、プログラマで
できる子は教えなくてもできるので、教える必要は無いし、
教えないとできない子は、教えてもできないので、いつの間にか他部署に行っている気がします。
プログラマの一番の教育は「教えないこと」?
新人にプログラマの適性があるかどうかの判断の材料に「教えないとできないか」どうかというのが自分の中ではあるような気がしますが、他のブログラマの方はどう思いますか?
非常に興味深いですね。特に「構築したメンタルモデルを、ブレずに一貫して適用できるかどうか」という点は、大いに賛同できます。
個人的には、プログラミングというものは素質さえあれば、他の工学系の技術と比べても非常に簡単に習得できるものだと思っています。一度も学術的にプログラミングを習った事のない人でも、良いモノを作る事がありますからね。
プログラミングの大半は既存のコードやライブラリの応用であって、自分の技術力で一からソフトを構築するような事は非常に稀です。既存のリソースを効果的に使い、カスタマイズしていく作業は、まさに「一貫した規則を形成して適用」することだと思います。
プログラマの育成において「教えない」というのは少し極端かも知れませんが、実際に動いているコードを与えて実行の仕方だけを教え、後は好きなように応用させてみるというやり方が良いのではないかという気がします。私自身、下手に一から教えられるよりは、大量のサンプルコードを貰った方が学びやすいですし。
と、根拠の無い私見、悪しからず。
そして、何がわからないのかも わからない。
「えー!? ホント?」
http://nanamicb.blog55.fc2.com/blog-entry-64.html
http://mimizun.com/log/2ch/english/984327758
確かにそうですね。
機械は作った通りに動くので、動かしながら理解する能力が長けていれば、論文の言う所のプログラム資質が無くても大丈夫だと思います。むしろ天才プログラマは、そういう人の方がなれるのかもしれません。
http://blog.livedoor.jp/tak_tak0/archives/51763179.html
先生「どうやって作りましたか?」
生徒「隣の人のを 写しました」
先生「自分で 作らなかったのかい?」
生徒「先生は、盗めといいましたから」
だれでもできるようになると思ってます。
素質とか向き不向きは当然ありますし、時間が許さないのもあるでしょうけど。
プログラミングではないのですが、先日事務所の女の子たちが数人がかりでExcelと格闘していました。楽しそうなので参加してみたのですが。
vlookup関数を使い、条件によって3列目から取ったり4列目から取ったりしたいってことだったんですけど、必要か所にif関数を入れればいいだけですよね。
これが思いつかなかったみたい。
思いつかなかった原因は、人それぞれ。
・vlookupはわかってても、列番号の中にif関数を使えると思わなかった。
・vlookup(検索値,範囲,列番号,検索の型)の検索値って何?って子
・vlookupの存在を知らなかった
・何が分からないのかわからない
関数は道具ですから、その道具の用途、使用方法が正しくわかる。これが必須。
どんな道具がある?使用方法は?もっと便利なのないの?といった疑問が必要。
わからないことを調べることができる人はまだまだ伸びる。(ネット検索でいいし)
わからないなりにも、ためしにやってみる人はまだまだ伸びる。もんだと思います。
あと、考え方について。
プログラミングに限らず、目標がある。そこへの道筋を順序良く考えられる人とそうでない人の差は出るでしょうね。
一気に処理したい→パターン化する→1件ずつ処理するしてループさせればよい
という感じで、現状から目標の間にある「できないこと」をいかに「自分にできること」に置き換えていくかができるかどうかのカギになるんじゃないかな。
勉強ならステップを1段ずつ登れるけど、実務となると3段飛ばしになったりしますし。
人によっては壁に見えるでしょうね。その間のステップ作れるかどうかがカギだと思います。
そして教える側は教える対象の感じてる壁を理解して、その間にステップを作ってやればいいんだと思います。
というのは、たぶん誤読だと思う。
論文ではそこまで主張していないはず。
「プログラミングは誰にでもできるようになる」というのはウソ。
見てれば分かるけど、そういうことを主張している人は、ろくにプログラミングをやったことがない。
キャッチボールしかやったことのない人が「誰でも野球はできるようになる」と言ってるような物です。そういう人達が主張する「できる」のレベルが低すぎ。
並列処理どころか再帰呼び出しもできないくせに「プログラミングができる」なんて言わないように。
たとえばこれ
>vlookup関数を使い、条件によって3列目から取ったり4列目から取ったりしたいってことだったんですけど、必要か所にif関数を入れればいいだけですよね。
再帰呼び出し以前のレベルかよ。。。
には ならないと思う。
別に 再起呼び出しとか使わなくても プログラムは できるし。
もちろん、プログラムの中には 簡単なもの、 難しいものなど レベルは あるでしょう。
才能がないと 難しいものは 作れないでしょうね。
アルゴリズムとかが考えられないものもあるでしょう。
あなた プログラマーなんでしょ。囲碁を対戦してくれるやつ作ってよと言われても
囲碁を知らなきゃ作れないし、強いプログラムを作るには 囲碁の実力がないと ダメでしょう。
それが ないから 素質がないプログラマーだとは いえないし。
といわれれば、広義で言えば、プログラムはかけているからできる。になるでしょう。
ただ、ここで言われているのは、一般的には業務レベルでという事になり、才能といわれているのは
いわゆるトッププログラマーなどの、それでメインプログラマーとしてお金が稼げる人たちの事でしょう。
プロ野球選手でなくても、野球はできますが。一般的に職業として野球ができる。という意味では プロ野球選手でなければできているとはいわれないでしょう。趣味のレベルと言われてしまう。という事だと思います。
言い方を変えれば、 ハローワールドを書ければ、プログラムが出来る。という定義の場合
みなさん、 プログラムが出るね。といわれて、嬉しいですか?
できて当たり前。と答えますよね。
ちなみに、囲碁などは、いわゆるNP困難問題に入るのかどうかはしりませんが、ごく基礎的なアルゴリズムなので、強いのは作れなくてもいいですが、弱いものは 数カ月程度囲碁を勉強して作れないと プログラムが出来るとは言わないと思います。
つまり、数カ月程度囲碁を勉強して、囲碁プログラムを作れるのがプログラムが出来る。ということかと思います。
この時に、囲碁を勉強するかどうかは別です。
個人的には教育によってプログラマを育てるのは無理だと思ってます。
企業が新人に教えられるのは、要は企業内の開発規則・基準と業務知識でしかない。
もちろん通り一遍の事は教えるでしょうけど、
そこには市販されている書籍にある以上の知識は無いでしょうし、
書籍の知識で万人がプログラマになれるわけでもないのは自明でしょう。
素質と言う言い方が正しいのかどうかはわかりませんが、
向き不向きは間違いなく存在していると確信しています。
結局どこまで求めるかになりますよね。
発注側としては理想はプラットフォームに依存せず、入力効率を最大限引き出せるようなインターフェイスと、効率的なデータベース設計ができてて、必要に応じたアウトプットができてたら最高。
実際の運用での話ですが、
簡単なものならPHP+SQL(必要ならjs)でも組める。むしろプラットフォームの関係で全部がこれでいけたら理想。
弱みとなるアウトプットも印刷だけならPDFでもいいしそのままwebでもいいし、CSVはきだしでもいいし。出力環境がかぎられるならアクセスの帳票でもいいし、出力結果をいじるならむしろExcelにVBAでSQL文投げちゃってもいい。
という感じで手段としてのプログラミングなら時間と環境さえ許されれば誰でも可能だと思いますよ。
オリジナルOS作りたいとか新しい規格打ち上げるレベルは職業プログラマでも1割もいないでしょう。