独学やスクールなど6つのパターンから考える!プログラミングのベストな学び方とは

2016年11月28日(月)
TechAcademy

本稿は、Codementorのブログ記事を了解を得て日本語翻訳し掲載した記事になります。

また本記事は、ソフトウェアデベロッパーのNatasha Postolovski氏によって投稿されました。

私たちは今まさに素晴らしい時代の転換期を迎えています。つまり、プログラミングの民主化が進んでいるのです。

これまで以上に多くの人々がプログラミングを学習していて、このスキルを活かせる場面は数多く存在しています。

  • スタートアップの立ち上げ(設立)
  • ゲームの開発
  • 機械学習
  • データサイエンス
  • マイクロコントローラのプログラミング
  • モバイルアプリの開発
  • IoTデバイスの開発

その他にも多くの可能性を秘めています。

プログラミングのスキルを活かしてできることが数多くあるのと同様に、プログラミングの学習方法にもこれまで以上に数多くの選択肢があります。このことにはメリットもある一方で、選択肢の多さに圧倒されてしまうかもしれません。

この記事は、数多くの選択肢からあなたにとってベストな学習方法を選ぶためのガイドです。

実際のところ、万人に適したプログラミングの学習方法はありませんが、おそらくあなたにとってベストな学習方法があるはずです。

この記事を読み終える頃には、あなたが進むべき道をはっきりと見つけられることを願っています!

目次

選択肢1:コンピュータサイエンスの学位を取得する

cs-620x410

  • 費用:アメリカにおいて約10,000~100,000ドル(日本円換算で約1,110,000~11,100,000円)
  • 時間:約3~4年
  • 就職:STEM(科学、テクノロジー、エンジニアリング、数学)学位を保有する応募者しか選考しないという企業もあります。さらには、その中で上位の大学の卒業生しか選考しない企業もあります。一方、公的な証明書(成績証明書、卒業証明書など)を選考において考慮しない企業もあります。

活用方法

コンピュータサイエンスの学位を取得するメリットは、コーディングのスキル以上のことを学ぶことができるという点です。コンピュータ全般について多くのことを学習できます。コンピュータの仕組み、コンピュータの問題処理方法、コンピュータシステムの基盤となる科学についてなどです。

もっとも、これらの理論的な側面に学習が偏るのは良くありませんが、コンピュータの基礎を理解しておくことは、コードの品質向上につながるだけでなく、ネットワークやオペレーティングシステムなどのコードの外において発生する問題をデバッグする能力を向上させることにもつながります。

一方、コンピュータサイエンスの学位を取得するという選択肢は、現代的なWebアプリケーションを構築するには、最短の道とはいえません。たとえ、講義内容が進歩的で、Web開発をカバーしているとしても最先端のテクノロジーを学べる可能性は低いでしょう。

Web開発は進歩が非常に速いため、大学のカリキュラムが追いついていくのは難しいのです。もし、あなたが特定の何かを構築するためにプログラミングを学習したいと思っているとしたら、コンピュータサイエンスの学位を取得することは、最も時間がかかるかつ最も実践的でない選択肢です。

一般的に、コンピュータサイエンスの学位の取得がベストなプログラミングの学習方法となるのは、次のような場合です。

  • あなたは学習を急いでいなくて、ソフトウェア開発のキャリアを計画している。
  • あなたはGoogle、Facebook、Uberなどの競争の激しいIT企業に就職したいと考えている(一般的に、これらの企業に就職するにはその分野の学位が必要です)。
  • あなたにとって学術的な環境が最も学習効率が高く、主体的に学習できる。
  • 人工知能や機械学習など、コンピュータの深い知識を必要とするような分野の問題を解決したいと思っている。
  • 十分な時間、お金、エネルギー、機会があり、…学位の取得を楽しむことができると思う。

選択肢2:コーディングブートキャンプ

bootcamp

  • 費用:アメリカにおいて約3,000~20,000ドル(日本円換算で約333,000~2,220,000円)
  • 時間:約3ヵ月
  • 就職:最近では、コーディングブートキャンプに就職保証が含まれるケースも増えています。コーディングブートキャンプを修了後に、ジュニアデベロッパーの職を得ることは十分可能です。もっとも、コンピュータサイエンスの正式な学位が必要となる一部の企業への就職は難しいかもしれません。

通常コーディングブートキャンプは、フルタイムまたはパートタイムのコースで、民間組織によって運営され、修了認定は付与されません。

形態としては、オンラインのコースもありますが、多くは教室で指導する通学のコースです。

コーディングブートキャンプは、最短期間でなるべく多くの実践的なスキルを習得することに焦点を当てています。

HTML、CSS、Ruby on Rails、JavaScriptなどを利用して、完全なWebアプリケーションを構築するスキルを習得できたかどうかが、成功を測る指標となるのが一般的です。

あなたが何か特定のものを構築したい場合や、プログラマーの仕事を早く得たい場合には、コーディングブートキャンプが最良の選択です。一般的に、コーディングブートキャンプは進行速度が速いです。

このことは、もしあなたがプログラミングに適性があるとしたら、良いことです。困難なことに挑戦し、日々進歩していることを実感できるでしょう。

全てのコーディングブートキャンプが、遅れている生徒や、あるコンセプトの理解に躓いている生徒を上手くフォローしてくれるわけではありません。また、カリキュラムに可能な限り多くの専門用語を詰め込もうとするあまり、重要なトピックについての説明が不十分になることもあるかもしれません。

コンピュータサイエンスの学位を取得する場合と同様に、学習の質は、コーディングブートキャンプ自体の質に左右されます。申し込み前に徹底的に下調べをして、そのコーディングブートキャンプに過去数年の運営実績があることに間違いないかどうかもチェックしてください。

コーディングブートキャンプがベストなプログラミングの学習方法となるのは、次のような場合です。

  • あなたはなるべく短期間でプログラミングのスキルを習得したいと思っている。
  • 何か特定のものを構築するためにプログラミングを学習したいと思っている。例えば、スタートアップ(設立)のアイデアを実現するためであったり、あなたが個人的に必要とするツールを構築するために。
  • あなたにとって教室に通学するスタイルが最も学習効率が高いが、コンピュータサイエンスの学位を取得するには、十分な時間またはお金がない場合。

選択肢3:独学(MOOCs、チュートリアル、書籍)

mooc-620x413

  • 費用:無料~5,000ドル(日本円換算で約0~555,000円)
  • 時間:約3ヵ月~1年以上
  • 就職:就職事情は、コーディングブートキャンプを修了後に、ジュニアデベロッパーの職を得る場合とほとんど同様です。一流のIT企業に就職するには学位が必要となる場合もあるため、難しいかもしれませんが、その他の企業は、あなたの才能とプログラミングへの情熱に、感心するかもしれません。

独学があなたに向いている場合、他の多くの人たちは一般的に一人で学習することに苦戦したり、また自律的に学べる人に感心するということにすら、気づかないかもしれません。

活用方法

メリット

あなたにとって一人で学ぶスタイルが最も学習効率が高い場合には、自分自身の好奇心に従っていろいろと試してみてください。独学でプログラミングを学ぶことに向いているかもしれません。

あらゆるプログラミングのトピックについて、膨大な数の無料の学習リソースが存在しているため、プログラミングの学習方法としては、独学は最もコストがかからない方法になるでしょう。

デメリット

一方デメリットとしては、特定のトピックについて理解できないときや、厄介なバグに直面したときに、質問できる人がいないことであり、プログラミング学習が困難になることです。

また、独学には自律が要されます。明確な学習プログラムやカリキュラムがなければ、いとも簡単に学習に躓いたり混迷してしまうでしょう。また、何を学ぶべきでないかに気づくのも難しいかもしれません。これはプログラミング学習において難しいことの1つですが、学ぶことができる数多くの可能性の中から、何を捨てて何に集中するかを選択することが重要なのです。

もしあなたが今までの人生を振り返ってみて、他の分野で独学でスキルを習得した経験があれば、その方法をプログラミングの学習にも応用できるかもしれません。また最終的に独学以外の学習方法を選ぶとしても、独学でプログラミングの基礎的な知識を身につけておくことは、人より一歩先んじるために役立ちます。

学習方法として独学を選ぶとしたら、選択できる学習スタイルはたくさんあります。:書籍、YouTubeのビデオ、文書によるチュートリアル、双方向的な学習によるコード演習、オンラインコースなどです。プログラミングの基礎的なコンセプトを学習できるゲームもあります。

独学の場合には、時々学習に躓くことは避けられません。そのため、質問できるサポートネットワークを持っておくようにしてください。例えば、Code Newbieなどのコミュニティ、Stack Overflowの回答者、プログラミングの経験のある友人などです。

他の学習方法の場合には、あなたの使える自由な時間、お金、エネルギーを多く投資しなければならないことは、注目に値します。

独学はあなたのペースで進めることができて、コストも最小に抑えられるので、もし時間、お金、エネルギー面での制約があるとしたら、最も柔軟性の高い学習方法です。

選択肢4:メンターから学ぶ

mentor-620x413

  • 費用:基本的には無料(ただし時々、メンターに昼食を奢るといいでしょう。)
  • 時間:約3ヵ月~1年以上
  • 就職:就職事情は、独学でプログラマーとなる場合とほとんど同様です。しかし、メンターがプログラマーとして仕事をしていたら、あなたの就職プロセスで何らかの支援をしてくれるかもしれません。

活用方法

プログラミング学習において、メンターを持つことのメリットは計り知れません。あなたの学習すべきことをピンポイントで教えてくれますし、あなたが何かの理解に苦戦しているときにも力になってくれます。

もしメンターが、IT業界で仕事をしていたら、何に焦点を当てて学習すべきかも教えてくれます。良きメンターを持つことのメリットは数多くあります。もしプログラミングを喜んで教えてくれる人がいたら、最大限活用するべきです。

しかし、注意すべき点もいくつかあります。

第一に、メンターから学ぶことを唯一の学習方法としてはいけません。メンターと会えない場合、または今後会えなくなった場合でも、学習をストップしないようにしましょう。メンターと会えるときには最大限活用するべきですが、完全にメンターに依存してはいけません。

こうした理由から、メンターから学ぶという学習方法を選ぶ場合には、ここで紹介している他の学習方法と組み合わせるのがおすすめです。

もう1つの注意点としては、メンターも一人の人間である以上、最も優れたメンターでさえ個人的な好みなどにおいて偏りを持っているという点です。

幅広い環境から影響を受けて、他のプログラマーたちとも交流することが重要です。オンライン上にあるプロラグミングのコミュニティに参加したり、地域のプログラミングのミートアップに出席したり、現在のメンターとは異なる視点を持つ他のメンターを探すことも可能です。

選択肢5:何かを作りながら実践を通して学ぶ

build

  • 費用:基本的には無料(構築に必要となるツール、サービスにかかる費用を除外した場合。)
  • 時間:約週間~数年
  • 就職:就職事情は、独学でプログラマーとなる場合とほとんど同様です。しかし、構築したものを企業の採用担当者に見せることができれば、選考プロセスで目を引くことができます。

活用方法

全ての人が幸運にも情熱的に作りたいと思えるほどの何かを持っているわけではありません。もしあなたがこうした幸運な人の1人であるとしたら、実践を通して学ぶことは、プログラミングの学習方法として素晴らしい選択です。

本質的にこの学習方法は、その場の必要に応じたタイムリーな学習になります。構築しているものを次のステップに進めるにはどうしたらいいかを考え出す必要があり、そのためにはリサーチを行い、その方法について学び、それを適用することになります。

Google検索で方法を探したり、Stack Overflowで回答を見つけるのに、多くの時間を費やすかもしれません。骨が折れるような作業に思えるかもしれませんが、最も優れた学習方法の1つです。より多くの情報を記憶したり、速く進歩するためには、最良の方法の1つです。

この学習方法の最大のリスクは、コピー&ペーストに陥る可能性があることです。

例えば、角の取れたデザインの、クリックできるボタン要素を作りたいとします。Stack Overflowで回答を探せば、まさにあなたが探していたようなコードのを誰かが公開しているのを発見できるでしょう。

しかし、コードの内容を理解せず、コピー&ペーストするだけだとしたら、実際には学習していることになりません。こうした場面では、あなたの目標をクリアーにする必要があります。プログラミングの学習のために、構築をしているでしょうか?

そうだとしたら、一度立ち止まって、スニペットを理解するための時間を取るべきです。

何かのプロジェクトを完成するという目標に向かって取り組んでいることは、プログラミング学習において、素晴らしいモチベーションの源となります。

実際に、私がプログラミングを学習している人を観察した経験から言うと、学習したことを個人的なプロジェクトに応用できる人は、そうでない人よりも、学習の進歩が速い傾向にあります。

選択肢6:上記の学習方法のいくつかを組み合わせる

all

どれか1つの学習方法を選んで、それに固執しなければならないということはありません。

私の場合、最初に書籍・オンラインのコースを利用した独学から始めて、次にコーディングブートキャンプ、その次に個人的なプロジェクトに取り組み、その次にメンターに師事して、さらにその次にコンピュータサイエンスの学位を取得するコースを選びました。

それぞれの学習方法には、それぞれに役立つ場面や時があるのです。1つの学習方法だけでは、あなたの目標に到達するには十分ではないかもしれません。

その目標が、良い企業に就職することであっても、スタートアップのアイデアのMVPを構築することであっても。

あとがき

多くの人々は、プログラミングの学習方法として、コーディングブートキャンプか独学か、またはコーディングブートキャンプかコンピュータサイエンスの学位か、どちらにするか選択に苦労しています。

私のアドバイスとしては、次のようになります。

  • IT業界で早く仕事を得たい人、また何かを構築したい人には、コーディングブートキャンプが向いています。
  • 過去に正規の教育が合わなかった人、大学を中退した人にも、コーディングブートキャンプが向いています。
  • 時間的な余裕があり、学術的な環境が好きで、IT業界のどんな企業にも就職で通用するようになりたい、またコンピュータについて幅広い知識を身につけたいと思っている人には、コンピュータサイエンスの学位取得が向いています。

もっとも、人それぞれに選択に影響を与える個人的な要素が他にもあると思いますが、こうした要素を考慮しないとしたらこれが私のアドバイスです。

また、なるべく早くプログラマーとして働き始めたいけれど、コンピュータサイエンスの学位も取得したいという場合には、まずは独学またはコーディングブートキャンプから始めて、次に仕事を得て、それから仕事と並行してコンピュータサイエンスの学位をパートタイムのコースで取得するというルートもあります。

このルートには、プログラミングに対する強い情熱が必要となります。というのも、仕事で一日中プログラミングに携わりながら、帰宅後にさらにプログラミングを学習することになるからです!

当然、全ての人に向いているわけではありませんが、あなたに挑戦する準備があり、両方の世界を体験してみたいと考えるなら、価値ある選択になると思います。

[お知らせ]TechAcademyでは初心者でも最短4週間でエンジニアになれるオンラインブートキャンプを開催しています。これからプログラミングを学習したいと考えている方はぜひご覧ください!


TechAcademyマガジンは、オンラインのプログラミングスクールTechAcademyが運営する教育×ITに関するWebメディアです。トレンドや最新情報など役に立つ記事を発信しています。
https://techacademy.jp/magazine/

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています