プログラミングの勉強を始めて1年間で思ったこととか勉強方法とか

本のまとめに続いてプログラミングの勉強を始めて1年間のまとめとして感想とかどう勉強したのかとかそんな感じのまとめを書きたいと思います。
思いつくままにつらづらと書いて行くのでまとまりは全然ないと思いますがご了承をwつまり殴り書き注意!
ちなみに買った本のまとめの記事はこちら↓
http://d.hatena.ne.jp/Akineko/20100220/1266682148


えーと、まず簡単にプログラミングの勉強を始めた理由ですが、今の職場ではデザインよりの仕事をしているわけなんですが基本は既にデザインしてあるものの加工が多くあまりデザインの仕事はしてない感じなんですね。それでもいろいろと勉強したりはするものも自分センスないなーと思ったり、たまに回ってくるデザインの仕事も理不尽な理由で締切明日だとかやっつけでやる仕事しかなかったりするので、段々と今の職場ではデザインの勉強しても意味がないなーと思うようになったわけです。
でまぁただお決まりの日々を過ごすのも嫌なので考えたところ、今の職場にはシステム部はあるし高校の時の授業で好きだったプログラムについて勉強してプログラマになろうと思い勉強始めたわけなのです。
というわけで、なんか前置きが長くなりましたがそんな感じで始めた勉強のまとめです。
変な切り方ですが無理矢理にでも区切らないと変に長くなりそうだったのでwww

勉強する言語選び

始めるにあたってこれが一番悩みましたねー。有名な言語だけでもかなりありますし、どの言語にも良い所悪い所様々で結局どれがいいんだよ!って1ヶ月ぐらいこれを選ぶだけで悩んだかも知れません。
そんなこんなで選んだのがJavaです。選んだ理由としてはオブジェクト指向プログラミングを勉強するならこれが一番なのかなと思ったからです。個人的には選んで当たりだったなと思っています。当たりだと思う理由はAPIが豊富で、Webアプリ・デスクトップ・携帯など様々なものが作成できてそれらの勉強が出来ることや、Javaを使って書かれた技術書が多いからです。本に限らずやっぱ情報は多いですしね。
ちなみに個人的に今勉強を始める人に勧めるなら、JavaRubyPythonJavaScript・C#あたりになると思います。理由はなんとなくw

言語の入門書

勉強していてふと思ったのは極端な言い方をすると有識者が判断する良い入門書って実はないんじゃないかなと。理由としてはやはり入門書って詳細な説明を省略するのが必然になってしまうのでどうしてもおかしいところが出てきてしまうんですね。でまぁ、そういったところを知識のある人が読めばこれはダメって思ってしまうんですが、実際のところ入門書に限って言えば言語の文法・機能?さえわかればいいんじゃないかなと。なぜかと言うとちゃんと勉強する人なら入門書で終わらず、その後もちゃんと様々な本を読んで勉強していくと思うんですよ。例えばJavaの入門書なんかで継承を機能の追加的な説明してあっても*1その後ちゃんとオブジェクト指向についての本を読めばそんな使い方はダメだとわかりますしね。文法は文法、継承とかのちゃんとした使い方とかはまた別の知識みたいな。まぁ酷いにも限度があると思いますし、酷いと言われている本は避けてるのでどんなものなのか知らないで言ってるわけなので知らずに語ってごめんなさいですが。なんとなく一度書こうかと思ってた事をいい機会だと書いてみました。

読書法

最初の頃は最初から最後まで順番にまじめに隅々まで読んでました。読む時間なんかも読み始めて集中切れるまでというか集中力切れてきた時の次の区切りまでって感じで。
この読み方されてる方って多いと思うんですが今思えばちと効率悪いなと。理由としては、集中切れてきた前後の当たりは当然のごとく惰性で読んでるのであまり頭に入ってないんですね。読むスピードなんかもかなり遅くなってるので無駄に時間を消費してる部分が多いなと。いいとこはあまりないかもしれませんね。


で、次に始めたのが複数の本を同時に読むこと。読み方はちと変わっただけで気分的に飽きてきたら読む本変えたり、その日の気分で変えたりです。
利点としては、その時の気分に一番あった本を読むのでスピードがよく効率がいいこと。
欠点は、中途半端になり過ぎると結局前に読んだところを覚えてなかったりw


中途半端になり過ぎて忘れてるのが気になったので次に始めたのが、読むときは1章とかまとまりのいい小さい範囲を先に決めてから読み、その区切りがついたら一度本を読むのをやめて休憩なりをすること。本を変えるのもこの区切りで。
利点は、まとまった範囲で読むので知識も塊として入るし、区切り決めてるのでモチベーションが維持し易い。
欠点は、特に思いつかなかったので以降はこれがベースに試行錯誤してる感じです。


読書法についての本を読んだら付箋を使うのがよさげだったので使い始める。使い方としては本に書いてあったのとは違う使い方ですが、本の上に貼るのは重要だと思ったところ、横は読むのに詰まっりと難しく感じたところ、下は読む際の区切りって感じで使ってます。
利点は、重要だと思ったところも難しいと思ったところも理解しようと何回も読み返したりとペースダウンすることがなくなったこと。付箋があれば気になった時に直ぐに見返せますからね。特に難しいところは後の部分を読むことによって理解できたりもしますし。


「トニー・ブザンの頭がよくなる本」と「ザ・マインドマップ」を読んで読書法にマインドマップを取り入れ読み方も書いてあったものを取り込んでみる。読書法はいまいちまだ出来てないのですがマインドマップは少しずつ掴めてきていい感じですね。最初は半信半疑だったんですが上手く書けたものだと見るだけで直ぐに内容思い出せたりとかなり便利です。早くマインドマップを自分のものとして定着させたいなと思います。

勉強時間

最初の頃は仕事終わって帰宅後にご飯や家事など終わったら気のままにって感じで区切りも休みも遊びもめちゃくちゃな感じでしたw
でまぁ経過も何もあったもんじゃないので現状だけ言うと、まず平日は昼休憩の1時間にご飯を食べながら本を1章分読むようにしてます。最近だと1章+マインドマップ作成って感じですね。本は1章が短めの気軽に読める本を選んでいます。そして、会社から帰宅後はさっきと同じく家事とか終わらせてノルマとして1日1章分は最低でも読むようにって決めてます。最近は仕事忙しかったり体調悪かったりと守れてませんが^^;
土日は基本的に勉強会とか仕事とかで大体埋まってるんですが、空いた時は大手書店で本選びも兼ねて読みまくったり今回のように勉強したことをまとめたりしてます。

言語を一つに絞るか複数学ぶか

1つの言語に絞って学ぶ利点。複数勉強するよりも深い知識の習得が早い。つまり実用レベルにより早くなれる。
欠点はその言語しか知らないと固定概念が出来てしまって他言語を扱う際に大きな壁となったりする。


複数言語を学ぶ利点。それぞれの言語特有の考え方を知れるので柔軟な考えが出来る。
欠点はどっち付かずで結局中途半端な力しかない状態になってしまう。


なんとなく自分が思ったことです。ちなみに僕は最初ひたすら複数の言語触ったりしてたんですけど、今はJavaに絞って一定レベルに達することが出来るまでは極力他言語は触らないようにしようと思っています。うん、思ってるんだよ…?w
結局のところ何を勉強するかは個人の自由だとは思いますがねw何かのエキスパートになりたいのか、プログラミング自体を勉強したいのかとか。あと、仕事がプログラマの人は複数勉強しても仕事では基本一つの言語使うでしょうから問題ないように思います。逆にプログラマになりたいと思っている人は今は一つに絞って実用レベルに早く達する事が出来るようになった方がいいだろうなとも思いますし。

基礎からじっくりとor実用的なものを手っ取り早く

基礎からの利点。しっかりとした実力がつく。エラーなどの対処も基礎知識があればないよりも早く気づける場合が多い。応用技術の習得も基礎知識がないよりも早い。
欠点。基礎をどれだけ勉強するかの程度にもよるけど実用レベルの知識の習得はややスローペースになる。


実用的なものを手っ取り早くの利点(フレームワークの使い方からとか)。実用的なというか形になったものの作成が早く出来るようになる。
欠点。基礎がないだけに何かでつまづくと原因が全く予想出来なかったりする。出来たものも実は欠陥だらけだったりの可能性も高い。


質問系の掲示板なんかを見てるとよく基礎の勉強を全然してないなーと本当に驚くような質問がありますよね。このフレームワーク使っててこんなエラーが出たんですがって質問を見たらフレームワークまったく関係ない初歩的ミスだったり。とにかくまぁそういうのは嫌ですし、基礎あっての応用だと思うので僕はとにかくひたすら基礎からいこうと思ってます。*2

勉強会

今のところ参加しているのはわんくま勉強会とこの前参加したVim勉強会ぐらいなのですが、どの勉強会も楽しいのでもっといろんな勉強会に参加していこうと思っています。勉強会はやはり人による生の説明を聞けるので理解が早いですし、なによりもいい刺激になってモチベーションアップになっていいですね。自分の興味外だった知識も入ったりしますし。あと、つながりが出来るのもとてもいいこと。みんなも是非是非いろんな勉強会に参加しましょう!

Twitter

ついったー楽しいよ!みんなも是非ついったーやろう!自分みたいな変態がって思ってる人も大丈夫!みんな変態ばかりだから!www
冗談はさておきついったーはいろんな意味で本当にいいですよ。交流面では知る範囲で一番気軽にいろんな人と話したりとか出来ますしお話を聞くこともできますし、*3情報収集面でも本当に幅広い情報が最速で流れてきますし、ただひたすら独り言をつぶやくのも楽しいです。その独り言に興味を持ってくれた人がいてつながりが出来るのも楽しいです。技術面のちょっとしたお悩みもつぶやけば親切な方が自分の余裕のある時に教えてくれたりします。まぁ頼り過ぎには注意ですが。

アウトプット

よく言われますよね、勉強はブログなんかにアウトプットした方がいいと。これは僕もよくそうだなと思います。まぁ利点がわかりつつもあまりアウトプットしてない自分ですがw
利点。記事としてまとめる為に復習し、曖昧な部分もちゃんと学べる。または曖昧だった部分が認識できる。また、間違ってる部分があれば100%で反応があるわけではありませんが指摘も頂けます。より良いのは更新したって事をついったーなんかにつぶやけば周りの人から指摘して頂けます。反響があればモチベーションもより一層アップしますしね。
まぁ僕が言うなですがorz

情報収集

とりあえず最低限の日課としては、はてなブックマークのコンピュータ・ITの人気エントリーをチェックして読むorブクマしてます。
あとは余裕があれば他情報サイトを巡回したりRSS読んだりと。RSSの登録ははてブでよく人気に上がるところとか、ついったーで知ったサイトだとかそういったものを。

これから

何よりもまずプログラマとして転職したいです!一応転職候補はあるんですがいろいろと悩み中。若干今の会社でプログラマに転向出来そうなきっかけ的なものが見えたんでそれを狙って勧めようかなとか。でも出来れば今の職場は離れたいしとウダウダと…。不景気な世の中って難しいですねw


勉強面ではスローペースですが最近ついったークライアントを作り始めてみました。とりあえずPOSTするのとメインTL・Reply・Directあたりを取得して表示&定期更新するまでは出来てるんですが、最近の体調不良とか忙しさで停滞中。読書とどちらをってのもありますね。
作成以外の勉強としてはひとまず先に書いた通りJavaに絞ってやってます。出来れば自宅サーバーもちゃんと体制整えてWebアプリなんかも作っていきたいなーとは思っているんですが、最低限読んで置きたいなと思ってる本たちもまだまだだったりwこういったバランスは難しいですね。


全然まとまりない感じですがひとまず1年間勉強して思ったこととか勉強法だとかのまとめです。何か聞きたいことあれば質問もコメント下されば書きますのでお気軽にどうぞです。


ついでと言ってはなんですが、いつもブログや勉強会やついったーなどでお世話になっております皆さんいつもありがとうございます。これからも頑張っていきたいと思いますので今後ともよろしくお願いします。

*1:いや、もちろん機能の追加とだけ説明してあったらひどいと思いますがw

*2:でも時々焦ったりもしますが…w

*3:返答を強制するなど絶対を求めたらダメですよw