働く以外で、プログラマーとして実力をつける方法
働く以外でプログラマーとして実力をつける方法があれば知りたいです。
例えば、技術書とかキャンプとかセミナー参加などあると思いますが。
という質問いただいたので、それについて考えてみます。
知識 or 実践?
技術書を読む、キャンプ・セミナー参加も実力をつける方法の一つです。
技術書を読めばそれだけ知識が増えるし、キャンプとかセミナーみたいなものに参加すればそこで教わった知識だったり実習の体験をつめます。
ただ一番実力がつく方法は、私が思うにコードを書くことです。
プログラムを作る体験そのものが一番実力がつく方法だと思います。
技術書を読むのは、コードを書くためです。
読んで身につけた知識を使ってコードを書くために読むんです。
技術書を読むだけでは実力がつかないってことはよくあります。
実力がつく読書と、つかない読書
私は図書館でよく本を借ります。
本屋で技術書を買う場合は余程欲しい本だけに限られますが、図書館ではとりあえず気になったものを借りてきてバーって読むというのをかなりやってきました。
たぶん100冊は軽く超えています。
そんな中、実力がついた本とそうじゃない本があります。
前者は本に書かれてるコードを実際に打ち込んで実行したり、本で身につけた知識を使って仕事や趣味の開発で使ってみたりしたものです。
サンプルコードをそのまま打つだけでもやってみると、読むだけに比べて多くのことが学べます。
サンプルコードをちょこっと改造して何か別のものを作ってみるとさらに学べます。
ちょっと変えるだけでうまく動かないところがあったりして、「これなんで動かないんだろう?」って試行錯誤してるうちにいろんな知識が身に付きます。
そういう体験から実力ってつくものなんじゃないかなと思います。
量をこなすと、質が上がる?
明治大学教授でベストセラー作家の齋藤孝さんは「量質転化」って現象を説明しています。
- 量が質に転化する
- 量をたくさんこなすとある時、質が上がる
こういう経験って誰でもありますよね?
勉強でも運動でも、例えば、受験勉強で最初よくわかんないなと思いつつも「ここはこういうことか」と問題解いて答え見て、「なんかよくわかんないような、分かったような」みたいな感じを繰り返していくと、ある時、問題を見た時に、「これ解ける!これも解ける!」ってなります。
部活動でも私はサッカー部だったけど、最初はへたクソで、
- ボールもちゃんと蹴れない
- ドリブルができない
っていう時に基礎的な練習、ボールを蹴って止める、同じドリブルを何度も繰り返す、そんなことをずっとやっていると、ある時、練習試合でうまく体が動いてドリブルで相手ディフェンダーをきれいにかわしてシュートを決めれた、そんな瞬間が訪れます。
無意識に体が勝手に動くみたいなことが起こるんです。
これって量をこなしたから、ある時、質が上がったって話だと思うんです。
プログラミングも同じでずっと最初のうちは、教科書に書いてあるお手本のコードを書き写してくってことを半信半疑ながらひたすらやってやってくと、ある時、「こういうプログラムを作りたいな」とか「仕事でこういうの作って」って依頼された時に「あのサンプルとあの教科書のあれを組み合わせて作れそうだな!」と発想が浮かぶようになります。
これが実力がついたっていうことです。ですから、量をこなすことがポイントなんです。
では、何の量をこなせばいいのか?
学んだことを使ってコードを書くことです。
知識とコードを結びつける
たとえば、
ネットワークのプロトコルであるTCP/IPは、レイヤーに分かれていて物理的なネットワークをつなぐためのデータとセッションを維持するためのデータとアプリケーションのデータという風に領域が分かれている
みたいな知識です。
直接TCP/IPを実装するコードを書くことはなくても、仕組みを知っていることでバグの原因の当たりをつけられたりします。
こういう知識も、知識としてだけでなく、体験と結びつけて理解する必要があります。
たとえば、WebAPIを呼び出すコードを書くときには、「内部的にはどう通信してるのかなぁ?」と想像します。
そこで、先程TCP/IPの知識と結びつきます。内部的にはまずイーサネットでつながって、そこからルータにIPを問い合わせて接続先を探してるんだろうなという風に。
そうやって、知識と自分の書いたコードを結びつけていきます。
つまりは、知識を学び、使う、これの量をこなすんです。
プログラミングを楽しんだもん勝ち!
具体的には、
- 本やWebサイト、動画から知識を学ぶ
- お手本のコードを真似して書いてみる
- お手本のコードを改造してみる
- お手本のコードを組み合わせて何か作りたいものを作ってみる
こんなことをやってけばいいんです。
まずは、好奇心から、
「プログラミングってどういうものなんだろう?」
って、本を読み、学んだ知識でコードを書いてみる、それを繰り返してるうちに、
「あれとこれを組み合わせたらこういうものがつくれるんじゃないか?」
って発想が浮かぶようになる、そして作りたいものを作る、初めはなかなかうまく行かなくて試行錯誤を繰り返す、そしてプログラムが完成する、そして振り返ってみると、
「おれって、けっこう実力ついてきたかも!」
ってなります。
これって、勉強というよりは興味の向くものを追っていくうちに自然とつながっていくことなので、楽しみながらできると思うんです。
そんな風に、ぜひプログラミングを楽しんでください!