2013年5月27日月曜日

才能とは何か

プログラマーは画家と同じように、
希少ではないにしろ才能を求められる職業です。

プログラマーに必要な才能の面白いところは、
既に目に見えて何段階かの才能のポイントが判明しているところです。

  • 構造化プログラミング
    • 順次
      • ポインタ・参照(カテゴライズとして間違っていますがとりあえず)
    • 反復
    • 分岐
  • オブジェクト指向
    • オーバーロード
    • 継承
      • オーバーライド
    • ポリモーフィズム
    • 隠蔽
  • 関数型言語
    • 再帰関数
    • λ計算
      • カリー化(これも微妙ですがとりあえず以下略)
まあ色々羅列していますが、
簡単にまとめる抽象化に必要な技能だということです。

高い次元の抽象化には高い才能が要求され、
下の次元では分かったのに理解できないのでわめき散らす人が現れます。

これもピーターの法則の一種でしょうか。

その人は無能レベルに達したといえるので、
一段階下に降りてもらって上の次元に行ける人から離してあげましょう。

そうすればお互いが幸せです。



って、ピーターの法則の話がしたいんじゃありません。

じゃあ才能が無ければ諦めるしかないのかという話です。

ここがややこしいのですが、
才能がなくても適切な学習を行えば習得できる可能性はあります。

しかし、それがいつになるのかは誰にもわからないのです。

あまりに現実的でないため、
よほど高みを望む意思が無ければ別の道を模索するべきなのです。

どうせすぐに次の壁が登場するでしょうしね。

分かりやすく言うなら、
新たに習得したい技能に100通りの方法があるとします。
(実際には無限に近い手法があるでしょうが、ここでは絞ります。)

パターンそのものは100通りでも、
そのうちのどれで習得可能かに大きな個人差があると思ってください。

自分と相性の悪い方法を取ると、
習得に失敗します。


で、才能のある人は100通りのうちの80~90通りくらいで習得が可能です。

よほどひねくれた習得方法を取らない限りは簡単に到達します。


普通の人は40~70くらいです。

運が良ければ一発で到達するかもしれませんが、
場合によっては何回も道選びに失敗することもあるでしょう。


才能が無い人は1~30くらいです。

王道と呼ばれる方法では無理かもしれません。

もしくはまだ人類が発見していない方法でないと習得できないかもしれません。

たまにもの凄く運が良ければ、
壁を乗り越えて習得できるかもしれません。



また選んだ道によって、
他の技能を覚える通りが減ったり増えたりする点にも注意しないといけません。

何事もいくらでもやり直せるというのは間違ってはいませんが、
同じやり直しのように見えて実はルートが変化しているのには要注意です。

それまでは行けたかもしれない道が、
実は消えてしまっているやもしれません。
(COBOLの人がオブジェクト指向を覚えにくい割に、初学者はすんなり入るなど)

ああ、道に罠が仕掛けられている可能性もありますね。

悪書とか誤った知識を持った先輩や上司と最初にぶつかってしまった場合です。

悪書はまだしも、先輩や上司は己の不幸を呪うしかありません。



まとめます。

あなたの進みたい方向にある道は無数にあります。

才能のある人は適当に選んでも前に進めます。

普通の人は道をよく考えて選ぶ必要があります。

才能のない人は本当に進みたい方向なのかをまず考えてください。

才能が分からないのであれば、
あなたが選んだ道の中で、
誤ったと感じたものを挙げてみてはいかがでしょうか。

他の人と比べて転んだ数が多ければ、
ちょっと注意した方が良いのかもしれません。

でも習得の仕方によっては、
前の道が通行可能になることもあります。

あなただけの進み方を見つけるべきでしょう。



あれ?

結局大したこと言ってないですね。



0 件のコメント:

コメントを投稿