「SOFT SKILLS ソフトウェア開発者の人生マニュアル」に学ぶプログラミング独学学習法
「SOFT SKILLS ソフトウェア開発者の人生マニュアル」とは?
「SOFT SKILLSソフトウェア開発者の人生マニュアル」とは、米でITプロフェッショナル向けWebメディア『Simple Programmer』を運営する他、複数の事業を行っているジョン・ソンメズさんの著書です。
エンジニア向けの本ではありますが、目次を見れば
- 第一部 キャリアを築こう
- 第二部 自分を売り込め!
- 第三部 学ぶことを学ぼう
- 第四部 生産性を高めよう
- 第五部 お金に強くなろう
- 第六部 やっぱり体が大事
- 第七部 負けない心を鍛えよう
技術的な話はほとんどありませんが、エンジニアの自己アピールの方法やエンジニアがどういうキャリアを築いて行くべきかということなどエンジニアのソフトスキルについて書かれていて紛れもなくエンジニア向けの本となっています。
今回はそんな中から第三部の「学ぶことを学ぼう」から著者のジョン・ソンメンズさんが提唱する10ステップの勉強方法を紹介します。
10ステッププロセス
SOFT SKILLSでは、著者のソメンズさんの経験を元に構築されたプログラミングを独学するための方法論です。
技術者は日々変化する技術をキャッチアップして行く必要があり、独学のスキルというのもこの前提と共に必須のスキルになっています。
以下の記事では独学やプログラミングスクールを活用した勉強法の比較を記事にしていますが、
Webエンジニアになるためのプログラミング勉強方法比較メリットとデメリット
スクールに通っても自習の時間や自分がエンジニアになった後にも独学は必要になります。
こういったことを念頭に起きつつ、 「これからプログラミングを勉強する」あるいは、「すでに勉強しはじめているけど、勉強方法があっているのかわからない」という人のために本書で紹介されている「10ステッププロセス」を紹介します。
10ステップのプロセス
早速著者の提唱している10ステップを書き出すと
- 全体像を掴む
- スコープを決める
- 成功の基準を決める
- 参考資料を見つける
- 学習プランを立てる
- リソースをフィルターにかける
- 使い始められるようにする方法を学ぶ
- 遊びまわる
- 役に立つことができるようになるまで学ぶ
- 教える
10ステッププロセスでは名前の通り以上のような10ステップを踏みますが、1~6は一度だけ行い、7~10ステップは自分が目指すレベルに達するまで繰り返します。
以下でそれぞれの項目について説明していきます。
1.全体像を掴む
このステップでは学びたい項目の基本的な調査を行います。このサイトを訪れている方はおそらくWebエンジニアになりたくて見ているはずなので、このサイトを訪れたことがすでにWeb開発の学習方法の調査になっているかもしれませんね。
インターネットの記事のリンクを収集したり、たまたま自分が持っている本の目次を眺めたりと行った感じで、このプロセスにはあまり時間をかけず、全体像を掴むことを意識して行います。
2.スコープを決める
このステップでは、学びたい範囲を決めます。学ぶ範囲も「プログラミング」では大きすぎるので「Rubyを使って簡単なブログを作れる知識を身につける」のようになるべく目標を絞ることがポイントです。
3.成功の基準を決める
このステップでは、学習計画の成功を定義する明確な文章をつくることが目標になります。先のステップの目標と重なる部分もあるかと思いますが、期限を設けたり、実装する機能を書き出したりして自分が達成する事項をより明確にしていきます。
4.参考資料を見つける
本では、参考資料のアイデアとして- 本
- ブログ記事
- オンラインビデオ
- 専門家
- ポッドキャスト
- ソースコード
- オンラインドキュメント
5. 学習プラン
これまでのステップで集めた情報を元に計画を練っていきますが目標達成の前にマイルストーンを置くことが重要で、いきなり大きな目標を目指して計画を練るのではなく、目標を分割してそれら全てをこなした時に大きな目標が達成される形で計画を立てます。
6. リソースをフィルターにかける
計画が決まったら用いる資料をフィルターにかけます。一度のステップで5冊も6冊も読むのは現実的でないので、目標を達成するための資料を絞り込んで1,2冊程度のこなせる範囲の量になるまでフィルターをかけています。
7.使い始められるようにする方法を学ぶ
ここのステップでは次の遊びのために必要な基本的な情報のインプットに力を注ぎます。Web開発でいうとRailsの環境構築だったり、RailsでブラウザにHello Worldと表示させてみたりのことを行うステップになります。
8.遊びまわる
ステップ7で環境構築が終わっていればあとは実際にプログラムを触ってみたり、改造してみたりして遊んでみます。どういう仕組みで動いているんだろう?やこの問題はどうすれば解決できるのか?など疑問が沸いたらメモして置くと良いです。
9.役に立つことができるようになるまで学ぶ
ここでは、先のステップで出てきた疑問を解消していきます。また集めてきた参考書を読み込んで対象への知識をより深いものにしていきます。
10.教える
教えることを躊躇する人は多いですが、実際のところ人より一歩でも前にいたら後ろの人に教えることが可能です。
著者によるとこのステップが最も大事で、他のステップを飛ばしてしもこのステップだけは絶対に飛ばしてはいけないというほどです。
アウトプット先として
- ブログポストを書く
- Youtube動画かチュートリアルを作る
- プレゼンテーションを行う
- 家族、友人と対話する
- オンラインフォーム内で回答する
一度インプとした情報を他者がわかりやすい状態でアウトプットするということが知識の隙間を埋めてくれるので、教えるという行為がプログラミング学習に置いて有意義なアクションになります。
まとめ
10ステッププロセスいかがでしたでしょうか?この勉強方法は実際のところプログラミング初学者にも現役エンジニアにも役立てられるものだと思っています。ステップを通して、自分が何をどれくらいの時間でどの程度まで勉強するかという自分で定めた目標を意識しながら進められると効率の良い勉強ができるのではないでしょうか。
今回はいかに技術を学ぶかという一部分だけ紹介しましたが、SOFT SKILLSは他にもエンジニアに役立つソフトスキルについて多く書かれているので大変ためになると思います。
興味のある方は以下のリンクからお願いします。