わたしが考える学習エンジンを回すコツ〜takiponeのケース
(English follows Japansese)
ども、大瀧です。
クラスメソッドのエンジニア採用では、自律的に学習を進める能力や技術習得の伸びしろ具合を表現する特性として「学習エンジン」という用語があります。素養として持っておくべきと言われる一方でこれを養う話題があまりないなと思い、学習エンジンを身につけるとしたら私はこのあたりを意識するかなぁと思ったポイントを共有してみます。
恐らく人によって観点やポイントが異なると思うので、他の方も学習エンジンについて思うところがあればブログやSNSで教えてもらえるとありがたいです!
学習の3つのプロセス
これから身につけようという学習領域があるとき、習得するためのプロセスを3つに分けてみました。
- インプット
- 検証
- アウトプット
"学習"というとインプットをイメージすることが多いと思いますが、知識としての定着をはかり後述の学習エンジンを回す目的で検証とアウトプットも必要と考えました。それぞれ解説します。
1. インプット
まずは学習内容を読み込むインプットです。IT技術のインプットとしては書籍やマニュアルをはじめ、Webで公開されているドキュメントやブログ記事など様々な資料が挙げられます。
2. 検証
インプットから得た内容が自分の思うものかどうかを検証します。IT技術であれば、実機を用いたプログラミングやサーバー構築がこれにあたります。サンプルコードや構成例が併記されるようなチュートリアル形式だと、インプットと検証を並行して進められる場合もあるでしょう。開発手法やマネジメントを学習する場合は、業務に適用してその効果を検証する場合もありそうです。
インプットとあわせて検証を行うことで、一夜漬けの試験勉強のような暗記を避けて実際の動作結果や体験を通した知識としての落とし込みが図れます。インプットのみで検証を省くと次のアウトプットが内容の要約やコピーになってしまうので、それを防ぐ効果もあります。
3. アウトプット
インプットおよび検証を通して理解できたことやわかったことをアウトプットします。アウトプット先は手書きのノートもあればPCやスマホのメモアプリ、SNSやブログなど様々です。
インプットと検証をある程度進めてからまとめを兼ねてアウトプットする場合もあれば、読み進める途中で散発的に書き込むスタイルもありそうです。
学習エンジンを高速で回す
IT技術領域は複雑化および高度化が進んでおり、学習の3プロセスを一度回してその領域を「完全に理解した」に到達できることはまれで、このサイクルを高速に反復することで理解を進めていくことになります。同じ領域の書籍やドキュメントを複数読み込むことで、領域の広いフィールドのうち理解したところを塗りつぶして行くような図にすると以下のイメージです。
ポイントとしては学習資料の手順通りに一本線で取り組むだけでなく、以下を追加で意識することでより効率的に塗っていく(=理解を進める)ことができます。
- 手順から外れる項目もやってみる
- 既知の項目との関連を紐付ける
- 学習内容に規則性を見出す
幅を持たせて面で塗る、某人気ゲームでいうローラーという武器のイメージです。
この面で塗るときに、既存の知識との照会が頻繁に発生します。ここで効いてくるのがプロセス3つめのアウトプットで、自己の理解で再構成した学習内容が残っているので照会が迅速に進められます。アウトプットが無くインプットに使ったときの原典を毎回照会するのは、インデックスのないデータベースアクセスのようにコストが大きく高速に行うことが難しいです。面で理解を広げていくことで知識の再現性、汎用性が得られ、次に同じようなことを学習するときに一から覚えるのではなく差分の学習で済ませられる効用もあるかなと思っています。
まとめ
わたしなりに考える、学習エンジンを身につけるコツとして以下を書いてみました。
- 学習はインプットだけでなく検証とアウトプットをセットで行う
- 学習の反復では既存のアウトプットを見返しつつ、関連項目や規則性などに着目する
人それぞれスタイルは異なると思うので、しっくり腹落ちするところ、違うやり方でこうする方がいいなぁというところなどぜひ皆さん考えてみてください!
参考
Hi, I'm takipone.
In recruiting engineers at Classmethod, the term "learning engine" is used to describe the ability to learn autonomously and the high degree of growth in technical acquisition. While it is said that it is important to have this as a skill, there are not many topics on how to cultivate it, so I would share some points that I think you should be aware of if you are going to acquire a learning engine.
I'm sure everyone has a different point of view, so if anyone else has any thoughts on learning engines, I'd appreciate it if you'd share them on your blog or social networking sites!
Three processes of learning
When there is an area of learning that you are about to acquire, we have divided the process of learning into three parts.
- input
- verification
- output
When we talk about "learning" we often think of input, but I also need verification and output for the purpose of consolidating the knowledge and turning the learning engine (described below). Each of these is explained below.
1. input
The first step is input, which is to read the content of the study. For example, there are some books and web documents.
2. verification
Verify that what you get from the input is what you think it is. In the case of IT technology, this includes programming using actual equipment and building servers. In addition, if the tutorials includes sample code and configuration examples, you may be able to proceed with the input and verification in parallel. In another case of learning development methods or management, the effectiveness can be verified by applying them to business operations.
By conducting verification together with input, we can avoid memorization like studying for an overnight exam and incorporate their own knowledge through actual operation results and experiences. If you only do input and omit verification, the next output will be a summary or a copy of the content, and this will also have the effect of preventing this.
3. output
Output is the output of what has been understood through input and verification. The output can be handwritten in a notebook, a notepad on a PC or smartphone, on a social networking service, or on a blog, etc.
There are cases where output is done as a summary after a certain amount of input and verification, and there are also cases where output is written sporadically during the process of reading.
Spinning up the learning engine at high speed
IT technology domains are becoming increasingly complex and sophisticated, and it is rare to reach a "complete understanding" of a domain in a single iteration of the three learning processes, so the cycle is repeated at high speed to advance understanding. The area is a large field, which is filled in as one learns and understands it, as shown in the diagram below.
The key point is not only to follow the steps of the study material in a straight line, but also to be aware of the following additional points to paint more efficiently (i.e., to advance understanding).
- Try to do items that are outside of the procedure
- Tying in connections with known items
- Finding regularity in what you learn
Paint with a surface with a width, the image of a weapon called a roller in a certain popular video game.
When painting with this surface, inquiries with existing knowledge frequently occur. This is where the third step in the process, output, comes into play, as it allows the user to quickly make inquiries because the content of the study that has been reconstructed by the user's own understanding remains. It is difficult to make inquiries every time to the original source when there is no output and it is used for input, because the cost is large like accessing a database without an index. I think there is also the utility of being able to reproduce and generalize knowledge by expanding understanding in terms of surfaces, and to learn only the differences instead of learning from scratch the next time you learn something similar.
Summary
I have written the following tips for developing a learning engine.
- Learning is not only input, but also validation and output as a set
- When iterating learning, look back at the existing output and focus on related items and regularities.
Everyone's style is different, so please think about what feels right for you and what you would prefer to do differently.