Make組ブログ

Python、Webサービスや製品開発、ライブラリー開発についてhirokikyが書きます

何歳からプログラミングを始めるべきか

何歳からプログラミングを始めるべきか

「プログラミングは何歳から始めるべきでしょうか」

これはよくある質問だと思う。 最近またTwitter上でこれに関する議論、疑問、嘆きなどが見られるので、 いい機会だと思って書いてみる。

何歳であれ適齢です

私の大好きな How to become a hacker という文章には:

始めようというやる気になったのなら、何歳であれ適齢です。
大抵の人は 15~20 歳で興味を持つようですが、私はその上下ともに例外を知ってます。

とある。 この文章は非常に参考になるので、この時点で論破かもしれない。 でも待ってほしい、それはさすがに暴論だし、知的じゃない。なにより「ハッカーになろう」と 「プログラミングは何歳から始めるべきか」では話が違う。

さて「プログラミング」って何だろうか。 そもそもなぜ「プログラミングは何歳から始めるべきか」、「私は始めるのが遅かったのではないか」と思うんだろうか。

疑問を持つことに、疑問をもつべきではないか

そもそも「プログラミングを始めるのが遅すぎたかな」と考え始めた時点で、 「なぜ自分がプログラミングをしたいのか」を考えたほうがいい。 もちろんこれはプログラミングに限ったことじゃなくて、例えばエレキギターでも油絵でもいい。

とにかく思うのは「遅すぎたかな」と考えた時点で自分の行動原理(つまり、何故その 行動を起こしたいかということ)にブレがあるんじゃないかということ。 例えばそれが「ソフトウェアに魅了されていて、それについてもっと知りたい」 という知識欲なら「プログラミングを始める年齢」は関係ない。

もちろんそんな単純ぽっきりな理由だけで毎日キーボードを叩く人はなかなかいないと思う。 たぶん他には人の役にたちたいという気持ちだったり、人生に意味を残したいという 気持ちかもしれない。誰かに憧れてるのかもしれないし、ハッカーになりたいのかもしれない。 あるいは生存戦略とか自己顕示欲とか(他人からしてどうでもいい)理由かもしれない。

そういった理由があるからプログラミングを始めるのであって、今更「プログラミングを始めるには遅かったか」 と考える必要なんてない。 たしかに「あぁもう少し早く始めていたら」という気持ちはわかるけど、今更後悔してもしかたがない。 むしろプログラミングをしていなかったときにも大切な何かを学んで、それが今にも活かされているはず。 そう考えるほうが精神的に楽だし、よりプログラミングのことを考えられる。

でもまぁ気持ちはわかる。 じゃぁなぜ「あぁもう少し早く始めていたら」と思ってしまうんだろう。

投資への恐怖心

「自分がプログラミングに捧げた時間が無駄だった」と思うのが怖いんじゃないか。

ロールプレイングゲームの話をしよう。 キャラクターは敵を倒すことによって経験値を得て、そしてその経験値によってレベルが 上がる。ゲームによっては「スキル振り」というものがあって、得た経験値をプレイヤーが 任意の「スキル」もしくは「ステータス」に割り振ることができるというもの。例えば 攻撃力が低くてもいいから、とにかく素早いキャラクターを作りたいのなら「素早さ」という ステータスに経験値を多く割り振って、多く「素早さ」のレベルを上げる。その代わり「攻撃力」 や「防御力」をあんまりあげずに、「魔力」は一切上げないというような育成をするだろう。 「素早さが取り柄」のキャラのはずが中途半端に「魔力」をあげてもしかたがない。 素早さを活かした回復が目的なら、そいつには積極的に回復アイテムを使わせるべきだよね。 でもここでちょっとミスって「魔力」に経験値を振ってしまったらどうしよう。これは完全に「育成ミス」 で、ハッキリ言ってリセットしちゃうかもしれない。

でも人生にはリセットがない。 おまけに時間は限られていて、得られる経験値には上限がある。余計なことには時間を使っちゃったら、もうそれは絶対に返ってこない。 やっぱりこれが怖いんじゃないか。

  • 「自分はプログラミングにこれだけの時間を捧げたけど結局それそのものが不要だった」
  • 「始めるのが遅すぎた。捧げた時間のわりには中途半端なレベルにしかなれなかった」

「盗賊のわりには素早さが足りない」、「魔法使いのわりにはキャパシティ(MP)が少ない」。 そんな「育成ミス」をしたくないんじゃないか。

そして人生というのには攻略本もないから、「本当に『素早さ』だけを上げるべきか」も分からない。 今、「自分がどんな風にスキルが振られているか」もわからない。

本当に現実というやつはクソゲーなんだ。完璧主義者にとってはとくにそうかもしれない。

何がしたいかを考える

でも待ってほしい。現実っていうゲームは「しきい値」がない。 「しきい値」というのは、例えばレベルアップのしきい値のことで、「経験値があと20あればレベルアップしますよ」といったもの。 だから時間を捧げれば、その分きちんと自分は変わってくれる。 たしかに何らかの基準、例えば学力試験だったり給料だったりは存在するけど、それはあくまで外部からの評価だよね。 「基準」であって、根本的に自分がどうありたいかとは関係がない。

そしてそもそも人生には「ロール」がない。 「ロール」なんて無いんだから、考えるべきは「何がしたいか」の一点でしかないんじゃないか。

私はハッカーに憧れている。そして「ハッカーになろう」というのは外部評価に依存している。 たしかに、私はハッカーに憧れているけど、「ハッカーになるためを第一に考えて行動はしたくない」 考えるべきは「何がしたいか」であって、根本的に私は「何かを面白いものを作りたい」、 「自分の技術で意味あるものを残したい」と考えている。

そういった自分基準の行動原理を持てば「プログラミングを始めるのが遅すぎたのではないか」などという考えは非常にどうでもよくなってくる。 だって自分が納得すればそれでいいんだから、遅すぎるも早すぎるもない。基準点は自分で作ってしまえばいいし、ハッキリ言ってベストエフォートだと思う。

「遅すぎたのではないか」という考えが生まれること自体、外部評価に囚われていて自分自身での考えが足りてない証拠だと思う。

余談 - 過程がすべて

さて「何がしたかを考えよう」と書いたが、ちょっとお酒でも飲んでみよう。 そして上記したようなことは「大まじめに実践しないこと」。

さきほどから現実というゲームはクソゲーだと何度も言っているけど、唯一クソゲーでないのが「自ら過程を楽しめる」ということ。

結局のところ「なしとげたいこと」「なりたいもの」について一生懸命になるのもいいけど、 その過程を楽しんだり、そこで得られるものに目を向けたほうが絶対にいい。 ゴールまで目をつぶって走っていると、現実というゲームは本当に意味のないものになってしまう。

とくに現実ってゲームはクソゲーだから、プレイヤーを喜ばせる要素について一切考えられていない。 レベルが上がっても「パンパカパーン」なんて言ってくれないし、上記したように「しきい値」が存在しないのでレベルが上ったかもわからない。

そういった喜びはプレイヤー自身が見つけていかなきゃいけない。 現実は何が起こるか分からないけど、それをまるっと楽しめて酒の肴にするのが、たぶん現実的に楽しい生き方なんだと思う。

まぁ、これは経験則によるところが大きのでどうでもいいことだけど、 楽しみというのは意外とその辺に転がってたりするからクソゲーも捨てたものではない。