[筆者: Jay Borenstein]
編集者注記: Jay Borensteinはスタンフォード大学のコンピュータ科学の講師で、FacebookのOpen Academyのファウンダ。
このところ、大学で十分な数の技術者が生産されない、と嘆く声が多い。シリコンバレーではとくにそうだ。合衆国労働省の予想では、2020年にはコンピュータ科学(computer science, CS)を専攻した学卒者への新規求人が140万口あり、しかし実際の卒業者はその30%しかいない、という。しかし実は、それよりももっと問題なのは、CSを専攻して卒業した者の多くに、企業ですぐに役に立つ実践的なスキルがないことだ。つまり、CSの学士や修士と、実際のソフトウェアエンジニアは、まったく違う物、なのだ。
大学のCSの課程には、ソフトウェア開発の実習もある。しかしそれはあくまでも教材の一環だから、職業としてのソフトウェア開発のいろんな側面は学生たちに伝わらない。まず、実際のソフトウェア開発のプロジェクトは、クラスの実習よりも大規模で時間も長い。現実のソフトウェア開発では、相当量の既存のコードも理解して使いこなせなければならない。さらに現実の世界では、プロジェクト管理や人間関係の要素がソフトウェア開発にも影響を及ぼす。そしてシステムは、技術を評価する先生ではなく、ユーザの満足度で評価が決まる。
この問題に対するベストソリューションは、学生をオープンソースのコミュニティに触れさせることによって、重要な基礎を与える大学のCS教育と、本物の仕事や作品が備える実践性とを結びつけることだ。
CSの学生たちをオープンソースに触れさせることは、彼らをソフトウェア産業の、どくどくと脈打つ心臓の部分に放り込むことになる。オープンソースの世界では誰もが開発に参加して新しいインフラや設計を一から作っていく。しかも、誰からも強制されずに自発的に。また大学での実習と違ってオープンソースの世界では、自分が行う寄与貢献(コントリビューション)が各エコシステムに直接の影響を与える。
学生たちをオープンソースの世界に慣れさせて、活発にコントリビューションをやらせることによって、CSの課程が実践的な職業教育にもなり、自分が勉強していることや書いているコードなどに、学生自身が現実感を持てるようになる。
学生たちをオープンソースの世界に触れさせるとは、単にそういう話をして、リンクを紹介して、「やってみたら」と言うことではない。ちゃんと、正規のカリキュラムを確立して、教師の役割、学生のやるべきこと、そしてアシスタントのベテランオープンソーサーにやってほしいことを、シナリオとして具体化しなければならない。アシスタントは、人気の高いオープンソースプロジェクト、MongoDBやMozilla、Open Badge、Ruby on Rails、SocketIOなどのメンテナを実際にやっている人がよい。このやり方は、今ぼくがここで思いつきを書いているのではなくて、いくつかの大学がすでに実践しており、以下のような成果を上げている:
大学のカリキュラムにオープンソースを導入することには、教育以外のメリットもある。それは、オープンソースの精神に中毒性(やみつきになること)があることだ。人間は集団的な生物なので、オープンソースにおける国境なき大規模なコラボレーションと、何かを変えようとする集団的意思力は、学生たちを明るく元気にする。未来のCS教育は壁のない教室で行われるようになり、卒業したその日から仕事ができる人材を数多く育てる、とぼくは信じてやまない。
広告