エンジニアの学び方─効率的に知識を得て,成果に結び付ける

第1章 効率的に学ぶには―知識の3つの軸と学びの3つのフェーズ

この記事を読むのに必要な時間:およそ 4.5 分

新社会人のみなさん,こんにちは。本特集は,新しいものを学ぶ際に出会う問題について解決するための糸口を提供するために書きました。

みなさんは,「IT業界は変化が激しいので学び続けることが必要だ」と聞いたことがあるのではないかと思います。そしてそのことに異論はないはずです。だからこそ今,本サイトを読んで何かを学ぼうとしているわけですよね。それはとても良いことです。

一方で,「学びたいけど時間がない」「何を学んだらよいかがわからない」「社会人として成果を出していける自信がない」などの悩みを抱えている方も多いです。筆者はこの悩みを解決したいです。

限られた文字数では,みなさんの個別の問題を解決することはできません。そこで,みなさん自身で問題を解決していくための糸口を提供します。まず本章では,第2章以降でより具体的な問題について説明するための材料となる,ちょっと抽象的な話をします。

知識には3つの軸がある

「何を学ぶか」を議論するうえで,まず知識を3つの軸(方向性)に分けてみましょう。「広い視野」軸,「深い理解」軸,「応用対象」軸の3つです。この3種類は,情報の入手方法や習得方法に違いがあります。たとえば,広い視野を得るための知識は勉強会で入手しやすいですが,応用対象の知識は入手が困難です。あなたが知識を有効活用して成果につなげるのは,この3つの軸それぞれの習得が必要です。

「IT業界で学び続けるうえでは,勉強会に参加することが大事だ」という意見を聞いたことがあるかと思います。一方で「勉強会になんか参加しても勉強できない」という意見もあります。このように意見が別れる場合,大前提が食い違っていて,矢印の始点が共通でないことがよくあります。勉強会は,参加することで視野が広がります。一方で,勉強会ばかりに力を入れて,仕事をないがしろにしたのでは本末転倒でしょう。何ごともバランスが大事です図1)。

図1 上:Xかnot Xかで意見が分かれているように見えるが……
下:実は始点に食い違いがあるだけで両方「中庸」を主張している

図1 上:Xかnot Xかで意見が分かれているように見えるが…… 下:実は始点に食い違いがあるだけで両方「中庸」を主張している

それでは「広い視野」軸,「深い理解」軸,「応用対象」軸のそれぞれについて詳しく見ていくことにしましょう。

「広い視野」

広い視野は,「学ぶべき対象」を見つけるために必要です。この軸の学びが足りていないと,新しいものに気付けません。その結果,自分の知っているものに固執するようになってしまいます。

「広い視野」軸は勉強会で学びやすいです。勉強会ではいろんなツールの紹介,言語の紹介,テクニックの紹介を見ることができるでしょう。そこに聴衆として参加するだけで学べます。また,ブログ記事やニュース記事を読むことでも学べるでしょう。自分の知らない情報が流れる場所を見つけ,それを見続けるだけでよいので簡単です。

しかし,いっぱい情報を集めればそれで十分でしょうか? いいえ,そうではありません。「広い視野」軸の学びで得られる知識は,具体的な,特定の状況に密結合なものが多いです。そしてその種の知識は,状況が変わればあっという間に価値が下がってしまいます。

広い視野を持つことは「時間をかけて学ぶべき対象」を見つけるための最初の一歩です。最初の一歩で立ち止まらず,先に進むことが必要です。

「深い理解」

深い理解は,学びの効率化と応用のために必要です。

自分の都合にあわせて変更できる抽象的な知識

この軸の学びが足りていないと,取り入れた知識をオウム返しのようにそのままの形で出力することしかできません。たとえば先輩が,history | cut-d' ' -f 4 | sort | uniq -c | sort -nrってやれば使う頻度の高いコマンドがわかるよ」と教えてくれたとしましょう。この知識をそのまま使うのには理解は必要ありません。しかし,それでは自分の都合に合わせて変更することはできません注1)。

具体的にどういう知識が必要でしょうか? たとえば「この縦棒は何だ? これはパイプだ」「パイプってなんだ? 左のプロセスの標準出力を右のプロセスの標準入力につなぐしくみだ」「じゃあ標準出力って何だ?」……などの知識が必要です。これは具体的な問題を解決する方法(ハウツー)ではありません。もっと抽象化された知識です。

抽象化された知識がどのように役立つか

抽象化された知識を持つと,新しい知識を得る速度が上がります。たとえば,プログラミングを未経験のAさん,C言語の経験があるBさんがRubyを学ぶとします。何が違うでしょうか。Bさんはたとえばこんなことを考えながら学びます。

「ああ,代入はC言語とほぼ同じね」「ループは独特な書き方をするんだなぁ」「C言語と違って型宣言がないけど型ってどうなってるんだろう」

などなど。

ここに出てきた「代入」「ループ」「型宣言」は,特定の言語だけの知識ではありません。いくつもの言語に通用する,抽象度の高い知識です。このような知識を持つことで,新しい知識を得る速度が上がります注2)。

具体的な知識・経験が必要

しかし,抽象的な理解をいきなり得ることはできません。具体的な知識・経験を持ったうえで,その上に理解を育てる必要があります。経験に基づかない抽象的な知識は,それがどう具体的な知識と対応するのかがわからず,応用できません注3)。

よく「勉強会に出ても勉強にならない」という主張を耳にします。これは「広い視野」軸と「深い理解」軸で考えるとわかりやすいです。広い視野を目的とした勉強会は,予備知識なしに出ても知識を得られます。しかし,そういう場で理解を深めることは難しいです。一方,深い理解を目的とした勉強会は,予備知識を持っている人が議論を通じて理解を深める場です。そこに予備知識なしで参加しても議論についていけません。

この軸の「すでに経験して知っていることを,もっと深く理解する」という方向性はとても重要です。しかし,この軸ばかりでは,新しいものに気づくことができず,たこつぼに陥ってしまいます。バランスが重要です注4)。

注1)
ちなみに筆者の手元で確認したところ,環境によってはcutの引数-f 4-f 6-f 3に変更する必要がありました。このコマンドは「入力をスペースで区切り,4番目を取り出す」という処理を担当しています。環境によっては取り出したいもの何番目に入っているかが変わるわけです。
注2)
「これは何だ?」「何のためにあるんだ?」「どうしてこう動くんだ?」などの問いを繰り返すことで,どんどん深く掘り下げられていきます。「代入って何?」「型は何のため にある?」「なんで3.times{...}でループとして動くの?(それは「Integer」のtimes「メソッド」「ブロック」を引数として取って,それを繰り返し呼ぶって仕様になっているからさ)」などなど。
注3)
ソクラテスは哲学を産婆術にたとえています。つまり,本質的な知識は外から与えられるものではなく,各人が自分の中で育て産むものであり,「哲学=抽象的な知識」はその手助けしかできないということです。
注4)
この「広げる」軸と「深める」軸の両方が必要という話は,経営学では「両利きの経営」と呼ばれているそうです。企業は成功したドメインの知識をさらに深くする方向に偏り,広げる軸をないがしろにしがちで,その結果新しいものに気づけなくなる,だからバランスが大事とのことです。
参考:入山章栄著『世界の経営学者はいま何を考えているのか──知られざるビジネスの知のフロンティア』 英治出版,2012年

「応用対象」

応用対象についての知識は,自分の理解を応用して成果を出すために必要です。この種の知識は「ドメイン知識」とも呼ばれます。

「広い視野」軸で知識を集め,「深い理解」軸でそれを抽象化しました。しかしそれだけでは何も成果は出ていません。成果を出すためには,理解を具体的な問題に応用する必要があります。そして,そのためには問題を詳しく知る必要があります。

たとえば,あなたが会社に所属している場合を考えてみましょう。会社は基本的に,顧客の抱えている問題を解決して,対価としてお金をもらっています。そしてその問題の情報は,会社の利益の源泉であり,社外で学ぶことは難しいです。

勉強会で学ぶことができるのは,あなたが解くべき問題についての知識ではありません。ほかの会社が,その会社の解くべき問題をどうやって解いたかです。特に手法にスポットライトが当たりがちです。肝心の「問題の知識」は,汎用的でない知識なのであまり語られず,また諸般の事情から隠されやすいのです。

自分の会社の中の文脈を理解せずに,ほかの会社の文脈での解決法をコピー&ペーストしても,なかなか成功しません。まずは自分の会社をよく観察して応用対象軸の学びを得て,会社の外の知識を会社の中向けに翻訳する作業が必要です。これをないがしろにすると,「ほかの会社ではうまくいった方法なのに,自社ではなぜかうまくいかない」という現象が起きます。

この軸の知識が足りていないと,何かを学んで,深く理解し,応用する力を持っていたとしても,それを何に応用して成果を出せばよいのかがわかりません。一方で,この軸ばかりに偏ると,所属している会社・ビジネスと密結合になってしまいます。

著者プロフィール

西尾泰和(にしおひろかず)

サイボウズ・ラボのエンジニア。個人やチームの生産性をどうすれば高めることができるかを研究し,未来のグループウェアの研究開発をしている。プログラミング言語の多様性と進化にも強い関心があり,2013年に出版した『コーディングを支える技術』はベストセラー,重版を経て,韓国語版が出版された。

コメント

コメントの記入