エンジニアは楽しく「勉強」しよう

みなさんは「勉強」というと何を思い浮かべるでしょうか?

机に向かって本を広げる、もくもくとノートに学んだことを書き込む、座って講義を受ける、そんなイメージを持っている人も少なくないのではないかと思います。

しかしプログラミングの学習においては、何もテキスト片手にパソコンとにらめっこするだけが「勉強」ではなく、他にももっとたくさんの方法があることを知っておく必要があります。

この記事では、そんなプログラマーの勉強方法にどのようなものがあるかをいくつか紹介してみたいと思います。

テキストを読んで書き写す

「これだけではない」という話はしたものの、この方法が悪いと言うわけではありません。

すでに現場で働いているプログラマーもやっていることのひとつに「写経」というものがあります。これは、何か新しく学ぶ技術をざっと理解するために用意されたサンプルプログラムをひたすら書き写す、という作業です。

これをやることで、ひとまず何か動くプログラムを書くことができ、それを出発点に内容を改造してみたり改めて1行ずつ読み直してみながら理解を深めることができる、という勉強方法です。

勉強が挫折する原因として大きいのが、「これを勉強した結果何ができるようになるんだろう?」という疑問が解消されずに勉強する意義を見失ってしまうことです。

写経はすでにそこにある完成品をひとまずのゴールとして学習を進めることができ、結果もすぐに自分で体験できるため、先が見えずに挫折することなく最初の一歩を踏み出せるとても良い方法です。

ただし注意点としては、写経はあくまで「出発点」であるため、写経が終わったからといって満足して学習をやめてしまわないようにすることです。

写経が完了して自分の手でプログラムを動かせたら、そこからプログラムを改造してみたり壊したりしてみながら、一つ一つのプログラムに対する理解を深めていくと良いでしょう。

技術書や公式ドキュメント、技術ブログを読む

研修ベンダーが用意するテキストや書店に売られている入門書などは、ある程度のまとまった内容が体系的にまとめられている一方、どうしても「理解しやすい」「よく使う(と思われる)」内容が優先され、そのプログラミング言語のすべてを説明しているわけではありません。

また、プログラミングに関連する知識は幅も広く奥も深いため、1度や2度の研修で扱い切れる分量ではない、という事情もあります。講師や現場のプログラマーも全てを知った上でプログラミングしているわけではありません。

という状況で大事になるのが、日々、習慣的に引き出しを増やしていくことです。そしてそのためには公式ドキュメントや技術ブログに日常的に目を通すのが有効です。また特定の内容を深堀りするタイプの技術書も良いでしょう。

公式ドキュメントはその技術やプログラミング言語についての情報を網羅的に記載していますし、技術ブログは毎日開くだけでいろいろな記事が目に入るようにデザインされています。

すぐに必要ではない知識だったとしても、「引き出しを増やしておく」感覚で「へー、そんなものもあるんだな」と思いながら継続して読むことで、いざ仕事でプログラミングとなったときもさっとアイデアが出てくるようになるはずです。細かな内容は都度調べ直せば良いでしょう。

このことは「プログラミング学習は「覚える」のではなく「アイデア」を増やそう」にも詳しく書いていますので、読んでみてください。

引き出しがなければイザという時に具体的な方法を調べることもできません。結果、既存の知識をベースになんとか頑張る(場合によっては諦める)ということにならないよう、日頃から引き出しを増やすことは重要です。

技術ブログサービスとしては、日本の QiitaQrunch や、海外の dev.toMedium などが有名です。質問投稿サイトの Stackoverflow も覚えておくと良いでしょう。

特定の言語やプラットフォームについてより深く知りたいのであれば、それらを開発している開発者のブログもとても勉強になります。開発者ブログは公式サイトの "Blog" や "Resource" といったメニューで用意されていることが多いですので、探してみてください。

これらは読んだ時に全てを理解する必要はありません。あくまで必要になったときになんとなく思い出せるネタを増やすつもりで読めば十分でしょう。

動画コンテンツを視聴する

家事や育児など、やらなければならない作業が多くて落ち着いて記事も読めない、という場合には動画コンテンツを視聴するというのも有効です。(私も最近よく観ています)

動画は別の作業で手が離せない状況でも近くで再生しておけば目と耳から学習できますし、文字だけの説明よりもビジュアルで頭に入りやすいメリットもあったりします。

視聴することの効果は先ほどの公式ドキュメントや技術ブログを読むことと同じですが、注意点として、質の良い動画コンテンツはだいたい英語である、ということがあります。英語に不安のある方は、まずはリスニングを鍛える目的でこのような動画コンテンツを観ることから初めても良いでしょう。

英語については以前に以下のような記事も書いていますので、併せて読んでみてください。

やっぱりエンジニアは英語ができた方がいい | Qrunch

自分で考えたシステムを作ってみる

ここまではすべて「インプット」による学習方法です。誰かが用意したものを自分の知識として取り入れるのがインプットですね。

プログラミングでは、インプットのほかに「アウトプット」による学習も重要になります。プログラミングは問題ごとに決まった「正解」を書ければOK、という単純なものではなく、状況に応じて最適なプログラムを自分で考え、判断して形にしなければならないためです。

インプットしている間はそこに書かれていることをそのまま自分の頭に入れればよいのですが、それでは「自分で考える」訓練にはなりません。自分で考えたものを自分で作る体験をして初めて自分で考える力が身についていきます

そこで、「自分で考えたサービス」を自分の力で形にする勉強法が重要になる、というわけです。

とはいっても大層なシステムを考える必要はありません。ちょっとしたTODOアプリやメモ帳、カレンダーなどを作れる範囲で作ってみればまずは十分でしょう。

学習の段階的にそれも難しそうな場合は、テキストなどの演習問題の内容を一部変えてみるだけでも十分効果的です。

いずれにしても、どこかに回答例が載っているものを書き写すのではなくて、何を書かなければいけないのか、どう書けばいいのか、どう調べれば良いのかを自分で考え、自分で動かし、自分で作り上げる、という体験が重要です。

何かが作れたら GitHub などのサービスを通じて公開してみるのも良いでしょう。

技術ブログを書いてみる

システムを作るほかに、自分が学んだことや考えたことを文章にして他のプログラマーに読んでもらう、というのも大事なアウトプットです。文章にして書いてみることで、今まで学習した内容の整理にもなり、さらにそれを読んだ他のエンジニアからの追加情報まで得られる可能性があるためです。

また、ほかの人が読んで役に立つ記事を書くことを考えると、曖昧なことや自信のないことは書けないと思いますので、今自分が書こうとしている内容について改めて調べ直すきっかけになる、という面もあります。

「ブログ記事なんてすごいエンジニアが書くもの」と思っている方も少なくないかと思いますが、Qiita や Qrunch、もしくは自身のブログなどに技術記事を書くというのは多くのプログラマーがやっていることで、その中には初学者が書いた記事も数多く公開されています。

技術記事を書くことのメリットは他にもいろいろあり、以下の記事に簡潔にまとめられています。ぜひ読んでみてください。

技術記事を書くことで得られる5つの効能 | give IT a try 

まとめ

ここまでインプット、アウトプット双方の観点から様々な勉強方法を書いてみました。

エンジニアは学ぶべき内容が尽きることは絶対にありません。プログラミング言語ひとつとってもそれを完全に理解しようと思ったらそれこそその言語の開発者になる勢いで学ばなければなりませんし、そうでなかったとしても仕事で使う技術はどんどん変化するのがプログラマーという仕事だと思っています。

ただし、「一生勉強」と考えてしまうとどうしても辛いイメージがつきまとってしまい、どこかで息切れしてしまうこともあると思います。そこで個人的に大事だと思っているのは「そのとき楽しめる方法を重点的にやる」ことです。

「とりあえず動かして楽しそうだから写経する」「新しいことを知りたいから本を読む」「ちょっと作ってみたいものができたから作ってみる」「他の人に読んでもらいたいから記事を書く」などなど、動機はなんでも良いので、その時の気分に合った方法を選ぶのが結果的に一番効率的で長続きします。

「勉強しなきゃいけないから勉強する」のではなく、面白そうなこと、好奇心を持ったことをやっていたら結果的に技術が身につき、仕事で役にたった、という方が何より楽しんで勉強できると思います。

勉強方法はきっとこれだけではないと思いますので、自分の性格や性質に合ったやり方を見つけて楽しくスキルアップしてみてください。


この記事が気に入ったらサポートをしてみませんか?