(apply-generic op . args)

教育者, 将軍, 栄養士, 心理学者, 親はプログラムする. 軍隊, 学生, 一部の社会はプログラムされる. - 計算機プログラムの構造と解釈 序文

独学プログラマへ プログラミングの学び方(こんな方法はいかが?)

  • 流れ
    • 1.創りたい物を決める。
    • 2.それを創るのに最適だと思われる言語を選択する。
    • 3.創りたい物の機能一覧を作る。
    • 4.その中から、最低限必要な機能をリストアップして、それらに優先順位を付ける。
    • 5.優先順位に従い、コードを書く。
    • 6.テストとデバック。
    • 7.なるべく早くリリースして、ユーザーのリアクションを確認する。
    • 8.5に戻ってループ。

 僕と同じ独学プログラマーの皆さん、こんな学び方はどうでしょうか?
僕は今現在、こういう流れでプログラムで遊んでいます。
ifとかforとか覚えたけど、これで何すればいいの???
って思っている人にはお勧めしたいです。

1.創りたい物を決める。

 これが一番難しいって言う人は多そうですね。
難しく考える必要はありません。
誰も作った事がない、新しい物である必要はありません。
Blogとか、SNSとか、ゲームとか自分が普段使っているサービスやソフトで
「ここがもう少しこうなっていたらなぁ!」
って思う事、ありませんか?
それを創ってしまえばいいのです。
何でもいいので、一つ決めちゃいましょう。

2.それを創るのに最適だと思われる言語を選択する。

 WebApplicationだと、
JAVA/Perl/Python/Ruby/PHP
とか、選択肢が沢山ありますよね。
現在学び中の言語があればそれでいいですし、周りにプログラマがいればその人と同じ言語にすれば良いと思います(教えて貰えるから)。
言語選択に関しては

初めてのサーバーOSの選び方(Linuxか?BSDか?Soralisか?)
結婚とは違い、選んだOSを一生使い続けなければいけない、という訳ではないのでとりあえずインストールして触るのが大事です。

この記事をプログラミング言語に置き換えて読んで頂ければ、と思います。


 VSTプラグインでSSLの臭いがするコンプ創るんだい!て人は、C++一本でしょうから、ここでは悩まなくてすみますね。

3.創りたい物の機能一覧を作る。

 貴方が創りたい物の機能を紙とかtxtに書き出しましょう。
Blogなら「ユーザー管理/登録/削除」「記事を読む/書く/消す」とかね。

4.その中から、最低限必要な機能をリストアップして、それらに優先順位を付ける。

 そのソフトウェアがソフトウェアとして機能する為に、必要最低限な機能だけを、まずはリストアップします。
そして、それらに優先順位を付けましょう。
MixiみたいなSNSを俺は創る!っていう場合、ボイスとかラジオとかはとりあえず置いておきましょうね。

5.優先順位に従い、コードを書く。

 ここで実際にコードを書きます。
今まで「入門〜」とかでifとかforとかしかやって来なかったかもしれませんが、1-4の手順を踏んでコードを書き始めたら、、、
楽しいですよ?
DBにアクセスしたり、正規表現で文字列弄ったり。
ifとかforだけではなく、その言語の様々な機能を使い始めるでしょう!


 そして、WebApplicationなら「あれ?サーバー、、、」とか「デザインどうしよう?」の様に、
必要な物の多さにビックリするでしょう。
僕もビックリしました、実際にサーバー立てたりして結構苦労しました。
でも、本当に多くの事を学べて力になりました!
学校や会社と違い、全てを自分で選択して用意したからこそ、得る事は多かったです。

6.テストとデバック。

 ひたすらテストを書いて、創った物触ってデバックっす!

7.なるべく早くリリースして、ユーザーのリアクションを確認する。

 必要最低限な機能を満たしたら、即リリースしましょう。
ユーザーはシンプルなサービスを愛します。
ユーザーからのリアクションを受け取って、追加する機能について吟味する。
必要最低限ではない、多くの機能はただの脂肪と化すので、要注意。

8.5に戻ってループ。

 後は自分が+αしたかった機能を追加したり、速度やセキュリティなんかのカイゼンです。
アルゴリズムを勉強して速度をカイゼンしたり、Apacheの色々な機能を使ってみたりね。




 こんな事をやって行くと、プログラミングの力は勿論の事、サーバー、デザインなんかの力も付きます。
是非、試してみてください!