学習方法は人それぞれですし「これをやっておけば絶対!」なんてことを言うつもりはサラサラありませんが、プログラミングに興味がある人がスキルをつける手助けになればと思い、意識的な指針をつらつらと書いていこうと思います。
何事にも興味を持ってみよう!
はじめは、「この技術面白そう!」とか「便利そう!」とかそういうレベルでいいと思います。
ネットの記事だったり(それこそQiitaのフィードに流れてくる記事とか)技術書を流し読みしてみたり。
もしかしたら今後その技術が役に立つ日がくるかもしれません。
実践できるかどうかは別として、こういうことが出来る(出来そう)という知識があるとないとでは雲泥の差です。
プログラミングに興味がないけど仕方がなくやっている人はまずは興味を持つところから始めてください(笑)
とにかく手を動かす
実践派?座学派?
人それぞれだと思いますが、自分なんかはコードを1行でも多く書いた方が知識として定着すると思っているのでとにかく手を動かします。ただし実践ばかりすればいいというのではなく、前述の通り知識も必要なので座学ももちろん必要です。
① まずはとにかく動くものを作る!
② 次に非効率的な部分をリファクタリング!
これの繰り返しになっていくと思います。
出来るようになってくると、ここは共通化した方が効率いいなとか、ここはエラーが起きそうだからトラップしかけておこうとか、できるようになりますが、初めはそんなことしていたら一生完成しませんので、まずは動くものを作りましょう。
その上でリファクタリングやエラー処理を実装していきましょう。
※なお、職業PGの場合は①しかできない場合が稀によくある。地獄だ…
目標を作ろう
人間、目標がないとモチベーションが上がらないものです。
身近なちょっとした不便を改善することから始めるといいかもしれません。
この技術が面白そうで使ってみたいけど何に使えるんだろう?とかもいいかもしれません。
もしかしたらすごいサービスが誕生するカモ…?
怠慢であれ
プログラマの三大美徳は「怠慢」「短気」「傲慢」なんて言われていますが、まさにその通りだと思います。
今回はその中でも怠慢をピックアップします。
全体の労力を減らすために手間を惜しまない気質。この気質の持ち主は、役立つプログラムを書いてみんなの苦労を減らしたり、同じ質問に何度も答えなくてもいいように文書を書いたりする。よって、プログラマーの第一の美徳である。
要は楽するための労力は惜しむなってことです。
極端な話、プログラムを書くということは手動でやっていたことをコンピュータにやらせて楽する手段です。
誰でも出来る単調な仕事のことを「刺身の上にタンポポを乗せる仕事」なんて表現しますが、我々の使命はボタンひとつで人の手を介さず刺身の上にタンポポを乗せる機能を作ることです。そんな単調な作業はコンピュータにやらせておきましょう!(余談ですが刺身の上に乗ってるアイツはタンポポじゃなくて食用菊らしいです)
車輪の再発明なんてもってのほかです。いま貴方がフルスクラッチで書こうとしている機能は大抵、先駆者たちが既にライブラリ化してくれています。そしてそっちの方が高性能です。先駆者たちに感謝しつつ使えるものはとことん使ってゆきましょう。(もちろん商用で利用するときはライセンスには気を付けて!)
徐々に守備範囲外のこともやってみよう
貴方はWebプログラマだとします。
使いこなせる技術はPHP,HTML,CSS,JavaScript,SQLです。
とりあえず動くものはできました。
しかし実運用を始めたらいろいろな問題や要望が出てきます。
SEOが効くようにURLを綺麗にしたい場合などはApacheのmod_rewriteなどWebサーバ特有の知識が必要になってきます。
レコードが増え、データベースへのアクセスがネックになってきたらインデックスを効かせるようにSQLを書きなおす必要が出てくるかもしれません。
バッチを組むならシェルスクリプトやUNIXコマンドの知識が必要となってきます。
そんぐらいプログラマがやって然るべきの範疇だよ!という議論は置いておいて、この辺の知識をすべて持って実践出来るという人は案外少ないものです。
こうやってプラスアルファを増やしていくことは重要になっていきます。
アウトプットをしよう!
勉強でもなんでもそうですがアウトプットは重要です。
その時は理解できていた気がしていても、一度やったことがあるはずなのに知識として定着していなくてまた調べなおしたり、後から読み返してみたらわけがわからなかったり・・・なんてことはよくある話です。
アウトプットと言ってもメモ書き程度からフォーマット立てた文書に起こすなど様々な方法がありますが、個人的にオススメなのはQiitaに投稿することです!
Qiitaに投稿するすることによって以下のような効果が期待できます。
- 備忘録になる
- より理解度が増す
- 同じような事象で困っている人が助かる
- もし間違っていたりさらに良い方法があったりしたら指摘してもらえる可能性がある
- 適当に書いても綺麗なページに仕上がる
※ちなみにQiitaの回しモノではありません
より理解度が増す
自分は記事に起こす際に、誤りがないか色々検証したりしながら記事を起こします。
その際に新たなる発見があったりすることも・・・
同じような事象で困っている人が助かる(かもしれない)
自分はわからないことがあったらインターネットで調べものをする方でして、よく助けてもらっているのですが、その記事は小人さんが生成してくれるわけでもなく、親切な人が記事を起こしてくれた賜物なんですよね。
自分が発信する側になればもしかしたら誰かの役に立てるかもしれません!
もし間違っていたりさらに良い方法があったりしたら指摘してもらえる可能性がある
Qiitaで書いた記事は様々な人が見に来る可能性があります。
そしてコメント欄があるのでもし誤りがあったり良い方法があった場合指摘してもらえる可能性があります。
自分も過去に投稿したQiitaに投稿した記事のコメントにでよりよい方法を指摘していただいたことがあり、助かりました。
適当に書いても綺麗なページに仕上がるので出来る人間になった気分になれる
技術情報だとコードやコマンドの貼り付けをすることがあると思いますが、単に並べて書いただけだと見栄えが悪いし、かといってソースコードをハイライト表示できるプラグインはあれど導入が面倒くさい…
そんなあなたにQiitaですよ!Markdownで記述できるからちょっとした記述方法を覚えればモーマンタイ!自分もたぶん5,6コの記述方法しか覚えてないですし使ってないです。
最後に
なんだかんだで継続は力なりですよ。
途切れない気持ちが私の道しるべ。