③他者に説明できるまで、自分に落とし込む
『6歳の子供に説明できなければ、理解したとは言えない。』
by アルベルト・アインシュタイン
アインシュタインも言った通り、どんな物事も説明する域に達していなければ理解したとは言えません。
言葉だけ覚えても意味がないですし、説明文をそのまま復唱しても本質的には意味がありません。
きちんと自分の言葉で、わかりやすく表現できることがプロとして求められるレベルです。
自分で学んだことを応用してみる
説明資料を作ってみる
自分で記事を書いてみる
知識をマインドマップかしてみる
知識を言語化して、人前で説明してみる
など、理解を深めるために有効な方法はいくつかあります。
自分にあった方法を探し、日常的に実践するようにしてみましょう。
④自分の環境を把握し、環境にあった情報を取得する
IT技術に関しては世の中に多くの情報が転がっています。
そのすべてが、すぐあなたにとって役に立つかといえばそうでもありません。
特に、対象となる環境が異なると、同じプログラミングでも全く違う世界の説明に過ぎずません。それを知らずに学んでいてはいざというときに役に立ちません。
そういった環境に関する情報の中で特にチェックすべきなのがOS、プログラミング言語、フレームワーク、ライブラリの4つです。
・OS
OSとはPCやスマホなどのデバイスの動作を定義した、動作の核となるソフトウェアです。
意味を理解するのは難しいかもしれませんが、 PC の OSではwindow や mac、スマホのOSとしては ios や androidなど異なるOSが存在している事をまず認識しておきましょう。
スマホアプリを作るための情報を収集すると言っても、iOSのソフトを作りたいのに、Androidの記事を参照しては意味がないのです。
今接している技術は、どのOSで有効な技術なのかよく把握しておくと良いでしょう。
・プログラミング言語
現在プログラミング言語は何十種類もあり、どんな言語でも有効なプログラムなど存在しないでしょう。
サンプルコードを読みにあたってもどの言語で書かれているのか理解して読まなければ、なんの学習効果もありません。
例えばPythonでプログラムを書いているのにRubyの記事を参照しても、あまり意味がないでしょう。
また言語にもバージョンがあり、3.6で書いているのに、参照する記事が3.4だと対応しておらず動かない場合があります。
データベースへの接続方法をGoogleで調べるときも「データベース 接続 python 3」とするなど、得たい情報だけでなく、調べたい言語とバージョンを加えて調べると良いでしょう。
・フレームワーク
Ruby では Rails や Python では Django やFlask、PHPではCakePHP やLaravelなど、各言語に置いて様々なWEBフレームワークが開発され利用されています。
フレームワークによっては独自の文法・規約を用意していて、あるフレームワークのプログラムを別のフレームワークにコピペしても動かないことがよくあります。
こちらも、情報を調査するときは 「データベース 接続 Django 2」など、フレームワーク名とバージョン名を記載するようにしましょう。
・ライブラリ
IT技術においては、「車輪の再開発をしてはいけない」という考えが広く取り入れられています。
自分より前に誰かが作ったものを、自分で時間をかけて作ってもたいした価値はないということです。
勉強という意味では価値あるものだと思いますが、仕事でその様な作業をしてはいけません。
そこで技術者たちは過去に作った「車輪」にあたる機能を持ったプログラムをライブラリとして共有し、より多くの時間を新しいものを生み出すことに割けるようにしてきました。
現在は Github等を活用してライブラリは共有され、誰でも開発に参画できるようになっています。
エラーメッセージや特定のトラブルで検索して調べて見たとき、自分のトラブルと同じ内容に見えて、別のライブラリを使っていることも多いです。
そうした場合、調べた情報が役立たないこともありますので、なにかライブラリに依存する記事ではないか注意して読むと良いでしょう。
次回:⑤バグはその場で解決し、問題を理解する⑥目的に沿った学習をする⑦論理の設計をする