何やら定期的にプログラムの宗教戦争が勃発していますが、もし自分が初心者の状態で自分の意志でプログラムの勉強を始めるなら何を選ぶか妄想してみました。対象としては、大学生くらいを想定しています。シチュエーションとしては、何だかよく解らないけどプログラムを覚えてみたいという動機とします。
選択の上でのポイント
挫折しなければ何でも良いというのが、正直なところです。では、どうやったら挫折しないのでしょうか?3つくらいのポイントがあるのかなぁと思います。
- 目的がある
- 成果が見えやすい
- 教えてくれる人がいる
・目的がある
一番大事なのは、目的だと思います。プログラムを覚えたいという目的だと、9割9分失敗するでしょう。もう少し具体的な目的が必要です。例えば、AppStoreやGoogle Playに公開して儲けたいとか、Webサービス公開して有名になりたいとか。或いはエロ画像を効率的に収集したいでも良いと思います。
・成果が見えやすい
成果が見えやすいというのも大きなポイントだと思います。例えば、100時間一心不乱にプログラムして始めて何らかの反応が見えるようなものであれば、そこまで達成出来る人は1%もいないでしょう。人間1時間もしたらあきるので、それくらいのスパンで何らかの成果がでて動くものが見える方が長続きすると思います。
・教えてくれる人がいる
最後に忘れてはいけないのが、教えてくれる人いるということです。初心者が本だけ読んでマスターするのは至難の業です。直接教えてくれる人がいる言語を前提に学ぶのが良いでしょう。ただ、最近だとネットでわりと質問出来たりするので、その辺りは改善されているのかもしれません。
今なら何を選ぶか?
上記を踏まえて、自分が大学生だったら何を選ぶかというと、恐らくObjectiveCでiOSアプリを開発するかJavaでAndroidアプリを開発すると思います。上記3つのポイントの内、「目的がある」と「成果が見えやすい」を抑え易いです。教えてくれる人は、正直ちょっと少ないのではと思います。
私はiOSアプリしか経験ありませんが、InterfaceBuilderで適当に貼り付けてたらそれっぽいモノが出来たりと作る楽しみを覚えるという点では良いと思います。その後のハマった時の面倒くささとかは、目をつぶりましょうw
プログラムが出来るようになったら?
晴れてプログラム出来るようになったら、始めて覚えたプログラム言語に固執せず何でも挑戦することですね。どうしても出来るようになったことでやりたくなりますが、何でも向き不向きがあります。また言語ごとに思想も全然違います。色々なモノに触れてこそ、言語ごとの良さというのが解ってきます。
まとめ
今回は何でも良いので覚えてみたいというシチュエーションでしたが、Webシステムを作るとかWebサービスを作るとかだったら、もちろん別の選択肢になります。そんなこんなを考えながら、息子にいつプログラムを教えたらよいか悩んでいます。現在、2歳。。。
See Also:
プログラムは、サイエンスかアートか?