
ソフトウェアエンジニアリングデイリー:コーディングブートキャンプがコンピュータサイエンスの学位の必要性を疑問視

2008 年以降、プログラマーの需要は急増しています。プログラマーが職を見つけるのに苦労することはほとんどなく、大学生は安全な就職の道としてコンピューターサイエンスに集まっています。
Software Engineering Daily は、プログラマー教育に関する 1 週間のポッドキャストで、コーディング ブートキャンプとオンライン コースが、従来の 4 年間のコンピューター サイエンスの学位取得計画に代わる安価で効果的な選択肢であることを発見しました。
コーディングブートキャンプとは何ですか?
コーディングブートキャンプは通常12週間ですが、28週間のものもあります。費用は12,000ドルから18,000ドルです。
コーディングブートキャンプの中には、受講生にある程度技術知識や基本的なコーディングスキルを求めているところもありますが、そうでないところもあります。コース修了時には、受講生はRuby on RailsまたはJavaScriptで完全なWebアプリケーションを問題なく作成できるようになることが期待されます。
「ブートキャンプ」という言葉がぴったりです。典型的な一日は午前9時のレッスンから始まり、夜遅くまで続くコーディングセッションで終わります。

App Academyの学生、ハシーブ・クレシさんは、数ヶ月に渡って完全にコード漬けの日々を過ごした様子をこう振り返ります。 「教材が猛スピードで次々と投入され、本当にたくさんのことを学びました。中でも『週90時間』がどんな感じか、ということを学びました。ここ5日間は、毎日午前10時から深夜0時までApp Academyにいました。」
学生がこの厳しい数か月間に学ぶトピックには、プログラミング言語、アルゴリズム、データベース、ソフトウェアテスト、エンジニアとして働くために必要な対人スキルなどがあります。
これらのキャンプに参加する生徒たちは、チェスゲームからFacebookクローンまで、様々なソフトウェアプロジェクトに取り組みます。これにより、生徒たちは作品ポートフォリオを作成し、将来の雇用主に自身の成長の証跡を残すことができます。
ほとんどのブートキャンプには、採用プロセスを進める方法を学生に教えるセクションも含まれています。
コーディングブートキャンプの受講生は、その後も安定して就職しています。App Academyは学生の就職率が高く、将来のプログラマーとしての給与を担保にした融資も提供しています。
ブートキャンプ vs. 大学
コーディングブートキャンプは、大学のコンピュータサイエンスのカリキュラムを凝縮したものではありません。
コーディングブートキャンプは実践を重視します。コーディングブートキャンプに参加した学生は、Webアプリケーションを構築できる程度の能力は身に付きますが、オートマトン理論や高度なアルゴリズムの複雑性分析に精通しているとは限りません。
対照的に、大学は理論を重視することを誇りにしています。
テキサス大学の高く評価されているコンピュータサイエンス プログラムは、「コンピュータサイエンスと関連アプリケーションの理論的基礎に重点を置いており」、「厳密な数学的証明に頻繁に依存しています。」
大学生はダイクストラ法の実行時計算量を暗記し、正しさを証明するための非常に骨の折れる証明を書く方法を学びます。しかし、こうした学習は、卒業後の就職活動ではほとんど役に立ちません。
コーディングブートキャンプの受講生は、大学のコンピュータサイエンスプログラムで行われる抽象的な理論的な講義、問題集、証明を避けることができるというメリットがあります。ブートキャンプでは、受講生はより多くの時間をコーディングに費やします。
大学では、「理論」は、もはや以前ほど重要ではなくなったコンピューターサイエンスの概念や言語を強調するための象牙のベールであることが判明することがよくあります。
コンピュータサイエンスのカリキュラムでは、正しさの証明、C言語のような時代遅れの言語、そして問題集に重点が置かれています。これらの科目には一定の価値がありますが、学生はプロトタイピング、チームワーク、そして最新のコードの作成にもっと時間を費やす方が効果的でしょう。

コンピュータサイエンスは現在、ほぼすべての仕事の分野に応用されていますが、大学では CS を工学分野としてではなく、まず理論的な自然科学として扱い続けています。
量子コンピューティングやディープラーニングといった最先端のコンピュータサイエンスの分野でさえ、今日では産業界で採用されています。もしコンピュータサイエンスのテーマが教室で実践的かつ産業的な枠組みを与えられないのであれば、そもそもそのテーマを探求する価値があるのかという疑問が生じます。
理論重視の学問的傾向の結果として、多くのコンピュータサイエンス専攻の学生がプログラミングができないまま大学を卒業してしまいます。DittachのCEOであるダニエル・ゲレンター氏は、自社のテック企業でコンピュータサイエンス専攻の学生を採用しない理由について次のように述べています。
イェール大学やプリンストン大学のコンピュータサイエンス学部には、iPhoneやAndroid開発のコースは一つもありません。ハーバード大学にはありますが、1学期で優秀な開発者を育てることはできません。ですから、テック系スタートアップに必要なコーディングスキルを大学卒業生が持っているとしたら、それはおそらく問題演習の合間に独学で習得したのでしょう。私の開発者の一人がこう言っていました。「コンピュータサイエンスの学校で優秀な成績を収めた人は、優秀な開発者ではなかったのです。」採用における私の経験がまさにそれを物語っています。
これは残念なことです。コンピュータサイエンスやエンジニアリングの学位を取得した若者は、優れたソフトウェア開発者になる素質を持っていることが多いからです。関心は確かにあるのです。しかし、教育は失敗しています。」
大学の視点から見ると、ソフトウェア製品の構築はコンピューター科学者ではなくエンジニアの仕事です。
理論は実践から逸脱するが、その逆はあり得ない
大学の一般的な弁明は、学術的なコンピュータサイエンスは理論に重点を置く必要があるというものです。なぜなら、強力な理論的知識は、最高の大学院研究、最高の論文、そして最高のブレークスルーにつながるからです。

しかし、学術界から生み出される最も重要なテクノロジーの多くは、現場での応用開発といった実践に深く根ざした理論研究から生まれています。
マテイ・ザハリア氏のSpark実装と博士論文は、Facebook、Google、Clouderaでの職務経験に基づいて形作られました。エヴァン・チャプリッキ氏のElm言語と博士論文は、JavaScriptに対する彼の個人的な不満がなければ実現しなかったでしょう。マイケル・ストーンブレーカー氏は、産業界での活動と切り離せない発見によりチューリング賞を受賞しました。
Software Engineering Daily による、Apache Spark の作成者 Matei Zaharia へのインタビューを聞いてください。
理論計算機科学は、生物学、物理学、化学と同様に「基礎科学」として擁護されることがあります。基礎科学に関する議論は、「大学がやらなければ、誰がやるんだ?」というものです。
しかし、コンピュータサイエンスの研究で得られる成果は往々にして非常に大きく、簡単に応用できるため、Google 、IBM 、Facebookなどの大手IT企業は、目に見える成果が見込めない大規模で大胆なプロジェクトに喜んで投資しています。
大学が理論に重点を置くことが、より良い研究につながるかどうかは分かりません。いずれにせよ、学生が実際に求めているのは理論ではありません。
コンピュータサイエンスの学生数とテクノロジー関連求人市場における需要の間には高い相関関係があります。これはドットコムバブルの終焉期にも当てはまりました。これらの学生の多くは、象牙の塔に長く留まるのではなく、就職を求めています。
大学のコンピュータサイエンス プログラムの限られた席をめぐる競争が激化するにつれ、残りの需要を満たすためにコーディング ブートキャンプの受講者数が急増しています。
成功事例
「もしApp Academyで学べたレベルまで独学でコーディングを学ぼうとしたら、もっとずっと長い時間がかかったでしょう。」ハシーブ・クレシは、かつて高額ポーカーをプレイしていたが、現在はウェブ開発に転向した。
数年間ポーカーをプレイした後、ハシーブさんはゲームへの興味を失い、新しい職業に就きたいと考えました。
ポーカー プレイヤーのスキルは他の多くの仕事には自然に応用できないし、ハシーブ氏は英語で大学の学位を取得していたため、技術職に就くには不向きだった。
テクノロジーの世界に参入するには、ハシーブさんは25歳で急激なキャリア転換を図り、まったく新しいスキルを習得しなければなりませんでした。
プログラミング能力が全くなかったにもかかわらず、App Academy での教育を通じて 1 年足らずでエンジニアとして必要なスキルを身につけました。
Haseeb Qureshi による「Poker to Programming」を聞いてください。
ハシーブ氏の成功は例外的なものではありません。チューリング・スクール・オブ・ソフトウェア・アンド・デザイン(Turing School of Software and Design)の卒業生の94%は、卒業後3ヶ月以内にソフトウェア開発者として就職しています。中には、既にシニア開発者として活躍し、チューリング・スクールに戻って開発者を探している卒業生もいます。
教育の代替手段
コーディングブートキャンプは種類も量も増加しています。
様々なブートキャンプを比較するサイトがいくつもあります。ソフトウェアエンジニアリングの分野が成長するにつれて、データサイエンスやユーザーエクスペリエンスデザインといった関連分野が細分化され、個別の職種へと発展してきました。
企業はデータサイエンティストを渇望しており、Galvanize Data Scienceのようなブートキャンプは、そうしたポジションを埋めるための学生を輩出しています。「データサイエンティストの人材は不足しています」と、Galvanize Data Scienceの共同創業者であるジョナサン・ディヌ氏は述べています。
コーディングブートキャンプの費用12,000ドルは大学ほど高額ではありませんが、多くの志望者にとっては依然として高額です。こうした学生のために、無料または安価なオンラインコースの選択肢が増えています。
Treehouseは、月額25~50ドルでフルスタック開発者向けの教育リソースを提供しています。このプログラムでは、コーディングスキルに加え、デザインとビジネス戦略を学ぶことができます。Treehouseは、楽しい学習体験を提供することに重点を置いています。
Dataquestは、データサイエンティスト向けのオンライン学習プラットフォームです。ブラウザ上でフル機能の学習体験を提供し、学生はPython、統計、Apache Sparkなどのツールをインタラクティブに学習できます。

Free Code Campは、 コーディングの方法を人々に教えながら、非営利団体を支援することを目的としたプログラムです。受講生は、10万人のフレンドリーなコミュニティの助けを借りながら、フルスタック開発を無料で学ぶことができます。
「フリー・コード・キャンプは、対面式のコーディングブートキャンプよりもはるかに多様性に富んでいます」と、フリー・コード・キャンプの創設者であるクインシー・ラーソン氏は述べています。ラーソン氏は、外部からのプレッシャーがないことによる学生の不利益を指摘しています。
「誰もあなたにこれをやれと指示する人がいないので、Free Code Camp で成功する人はコーディングブートキャンプで成功する人よりもずっと積極性と自主性を持っています。」
Free Code Camp の Quincy Larson 氏へのインタビューを聞いてください。
明るい未来
大学卒業生の失業率はドットコムバブル崩壊の最悪期よりも高くなっているが、プログラマーや技術者の雇用は急増している。
「会計、財務、そして多くの一般的な手続き型の仕事が自動化されつつあり、そうした分野の人々はプログラミングへの転向を望んでいます」とラーソン氏は言う。「野心のない平均的な人が仕事に就けなくなる時代が来るでしょう。」
2025年までに、 30%の仕事がロボットや人工知能に置き換えられる可能性があります。放射線科、会計、法律といった権威ある分野では、自動化によって業務の大半が担われるようになるため、人材が減少する可能性があります。
悪い知らせ:プログラミングは、雇用の安全な避難場所として残された数少ない選択肢の一つです。良い知らせ:誰でも読み書きを学べるのと同じように、誰でもコーディングを学べます。クインシー・ラーソン氏が言うように、最大の課題は技術的なものではなく、心理的なものです。 「必ずしも優秀な開発者になるとは思えないような人が、ひょっこりと現れることもあるのです。」