エンジニアtype - エンジニアのシゴト人生を考えるWebマガジン
  • TOP
  • キーパーソン
  • 旬ネタ
  • コラボ
  • ノウハウ
  • 女子部
  • キャリア

新人プログラマーに向けて、技術書の使い方と学ぶ姿勢について【連載:えふしん】

2015/04/02公開

 
えふしんのWebサービスサバイバル術

藤川真一(えふしん)

FA装置メーカー、Web制作のベンチャーを経て、2006年にGMOペパボへ。ショッピングモールサービスにプロデューサーとして携わるかたわら、2007年からモバイル端末向けのTwitterウェブサービス型クライアント『モバツイ』の開発・運営を個人で開始。2010年、想創社を設立し、2012年4月30日まで代表取締役社長を務める。その後、想創社(version2)を設立しiPhoneアプリ『ShopCard.me』を開発。2014年8月1日からBASE(ベイス)株式会社のCTOに就任

みなさん、こんにちは。えふしんです。新入社員として入社されて、初めて僕の文章を見る方、はじめまして!5月病などにならないよう、肩の力を抜いて楽しく仕事していきましょう!

今回は、これからプログラミングを学ぶ人たちにむけて、書籍を活用するためのテクニックを書いてみたいと思います。

プログラミングの技術書の使いこなし方

昔、書評を書くアルバイトをやっておりました。プログラミングの技術書を読んで書評を書くアルバイトで、技術書もいただけるし、お金もいただけるというおいしい仕事でした。その時にいろんな本を読んだのですが、特に初級者向けの技術書には、2つのパターンがあることに気が付きました。

1.本物の初心者本
2.初心者本を装った全然初心者向けじゃない本

出版業界でお金になるのは、初心者向けの本と言われています。初心者向けの本は、伝えることや文章の平易さに定評があるプロのライターさんが書いている本が一番分かりやすいです。つまり、「教えるプロ」が書いている本ですね。

それに対し、少しターゲティングに失敗しているような本だと、決して分かりやすい内容ではないのに、帯に初心者向けと書いてしまっているケースもあるようです。立ち読みでパラパラ見てみて、自分の感覚に合いそうな本を探すということは、すごく大切なのだということに気が付きます。

nakajima-5-image

From Dennis from Atlanta
同じ「技術書」にも、2つの「パターン」がある

更にもう一つ、ネットの記事や先輩など上級者が勧める本として、

3.初心者向けじゃないし、書いてあることも難解な高度な本

というのも挙げられます。プロが役に立つ本というのは、オライリーの本なんかが有名ですし、原典と呼ばれる技術書なども挙げられたりします。

確かに技術の正確性や高度な情報を得るためには良書なのですが、こういう本は必ずしも分かりやすいわけではないです。文章も決して平易ではないですし、読む側の空気を読むスキルを求められることが多いです。

この状況を整理するには、本が実現していることについて考えると良いと思います。

本という「パッケージ」について知ろう

本というのは、本屋さんの棚に入るサイズですし、カバンで持ち歩けるサイズじゃないと、あまり買いたくないですよね。

技術書で多いのは300から400ページ前後の本でしょうか。そこに文章や絵を詰め込んでいくわけですが、当然ですが、読める文字で書かれた本の中に詰め込める情報量には限りがあります。

制約の中で、この本は初心者向け、この本は上級者向けと切り分けていくと、その本が対象としているスタートが違うだけでなく、1ページあたりに進む情報量が違うことに気が付きます。それを300倍から400倍してみると、到達するゴールの高さも違うことに気が付きます。

文章は難解でいろんなことを詰め込んだ本は、最終的な到達点を遠くまで持っていくことができますが、理解するためにスキルや知識が必要です。

一方、分かりやすい本は、理解できる人がたくさんいるけれども、最終的な到達点は高くはできないです。

誤解を恐れずに言うと、初心者向けの本を一冊読むだけでは、1人でプログラミングをするのは難しいでしょう。

■初心者向けの本を読んでも中級者にはなれない。初心者を脱するための情報は書いてある。

■中級者は中級者向けの本を読んでも上級者にはなれない。中級者を脱するための情報は書いてある。

■初心者が上級者向けの本を読んで、理解できないなら読んでも時間の無駄である。

この3点に気が付くことが大事です。

つまり、

■本は一冊で満足せず、初級者本から徐々にレベルを上げていき、自分のフェーズにあわせた本を見つけ、何冊も買う。

という答えが導き出せるのではないでしょうか。

特にセキュリティなどは非常にややこしい上にで、分かりやすさを捨てて原理主義的にならざるを得ない部分もあるため、一冊の本だけで満足せず、セキュリティはセキュリティだけの本を読んでアレンジする力が必要です。

今、Webのエンジニアの仕事が難しいのは、断片化された技術の組み合わせをアレンジしなくてはいけない点ではないかと思ったりします。

いずれにせよ、手に持った本がどのフェーズをカバーしてくれる本なのかを知ることができると、本屋さんの棚の見え方も変わってくると思います。

いずれ頑張って難しい本も読まないといけない時がやってくる

理解できない本を読んでも時間の無駄とは書いたものの、それを克服しなくてはいけないケースがあります。

少しお恥ずかしい話なのですが、ある日突然、機械学習やレコメンドで使う協調フィルタリングなどの知識が必要になり、関連する本を読み始めたのですが、正直言って、僕の経験、スキルでは非常にハードルが高かったです。

ネット上のリソースを調べていてもレコメンドなどについてプレゼンをしている方は、東大でコンピュータサイエンスを学んでいるような方々が活躍されている領域なので、いろんな部分で、その基準に満たない自分からすると、ハードルが高いのは当たり前で仕方ないことだと思いました。

その時は、『集合知プログラミング』というオライリーの本を読み始めました。

そもそもオライリーの本は書いてあることが難解なのですが、それを差し引いても、馴染みのない技術ジャンルに挑戦しているのだということを理解し、「分からないのは当たり前」という姿勢で、同じ本をまず3回は、最初から最後まで読むことを心がけました。

何回か繰り返し読んでいると、最初は全く見えない景色も、少しずつ書いてある世界が見えてくるようになります。しかし、まだまだ理解できているわけではありません。でも徐々に、

「見えるぞ、私にも敵が見える!」

と、少しずつ視界が開けてきます。この段階で、ようやく少しだけ使えるようになったかな、というレベルでした。

ようやく、そこからサンプルコードなどの写経を初めて、Hadoopや統計演算ライブラリであるMahoutなどの使い方を学んでいきます。コマンドを叩くのは簡単ですが、最低限、何をやっているのかを理解しないことには、正しい応用もできません。

皆さんも、そのような学びを求められるタイミングが来ると思いますので、そういうチャンスは見送らずに全力で立ち向かいましょう。

自由に楽しみながら、プログラミングを学んでほしい

僕も土日の休みの日にひたすらオライリーの本を読むのは、正直言って苦行でしたが、そうしなくては前に進めない時とはやってくるものです。

仕事という視点では、会社の業務時間中にのみ作業をするのが、理屈上も法律上も正しいのだと思います。しかし、仕事に必要な準備の時間は、その人その人で変わるハズです。

準備をしてるだけでは仕事は前に進まないわけで、労働の準備が短く済む人は器用な人として評価されるでしょうが、そうでない人は、効率が悪く仕事ができない人、と思われてしまいます。

準備のタスクが、1日8時間の労働時間だけで、十分足りるかどうか人それぞれでしょう。

少なくとも、技術の有無や応用力の有無が、その人の評価につながってくるし、成果物の良しあしに影響するのであれば、モノづくりのエンジニアとしては、そのための準備を会社の労働時間だけに限定するのはもったいないと思います。

何より、業務は自分の知的好奇心を満たす舞台だと思って楽しんでいける人と、仕事を仕事としてしか捉えていない人は明確に差が付いていくんですよね。

今のプログラムの世界は、オープンソースを通じて誰でも最新技術に触れる時代に入っているからこそ、技術に対する関心の有無こそが、差別化要素になっていきます。

仕事のために勉強し続けなきゃいけないなんて、楽な仕事ではないのかもしれないですが、その分、常に新しいことができる、可能性に満ちあふれた楽しい仕事だと思います。

オライリーの本を読んでいる自分カッコイイ!などとワクワクできるといいですね!カフェでオライリー片手にドヤーとしたって、結構じゃないですか!

周りの目なんか気にせず、自分の楽しい道を見つけて、頑張っていきましょう!

>> えふしん氏の連載一覧


新着記事

編集部からのお知らせ

エンジニアに人気の求人

エンジニアtype姉妹サイト