(写真左から)FiNCの取締役CTO南野充則氏と、エンジニア大谷真史氏
Webサービス・アプリ開発の現場で、プログラマー不足が大きな課題になって久しい。
子どもや学生を対象としたプログラミングスクールなどが注目を集める中で、2012年4月創業のヘルスケアベンチャー、FiNC(フィンク)が長期インターンの一環として「最難関エンジニアインターン育成プログラム」を実施している。
これは、事前選考で厳選された少人数のプログラミング未経験者を対象に、Ruby on Railsを中心に開発スキルを身に付けてもらうというもの。45日間でWebアプリ制作を手掛ける実践的なスキルを身に付けてもらうことを目的としている。
今年は3期目となるインターン8人が研修を受けており、そのほとんどが文系出身の学生だそう。
彼らがわずか1カ月半でRuby on Railsを使ったWebアプリ開発ができるようになるまで育成するというプログラムの大きな特徴は、インターン経験者たちがカリキュラムを作成することと、研修内容が前半・後半の2部構成で成り立っていることだ。
このプログラムを主導する取締役CTOの南野充則氏と、インターン2期生として現在メンターも務めているエンジニア大谷真史氏に話を聞いた。
プログラムを学ぶ以上に「Webの仕組み」を知ることが肝心
Wantedlyに掲載している「エンジニアインターン育成プログラム」の募集ページ
まずは、同社が展開するインターン育成プログラムの概要を紹介しよう。
■研修第一部の内容
・Linux -Linuxコマンドの使い方を学ぶ
・vim -コーディング速度向上
・PHP(基礎) -一般的なアルゴリズム問題を解きながら学習
・MySQL -SQL文, DB概念を学ぶ
・RDB -DB設計を学ぶ
・HTML/CSS -基礎コーディングを学ぶ
・Web -Web/HTTPの仕組みを学ぶ
・PHP(応用) -MySQL利用, HTTP埋め込み, session
・Security -XSS, SQL injection, CSRF実装を学ぶ■研修第二部の内容
・Git -Gitコマンドを学ぶ
・GitHub -GitHubを使ったコーディングを学ぶ
・Ruby on Rails -MVC, scaffold, migration, routingなどを学ぶ
・Ruby -アルゴリズム実装
・オブジェクト指向 -オブジェクト指向を理解する
・Rails test(scaffold) -実際に「掲示板」を作成してみる
・Rails test(generate) -掲示板作成
・Rails application作成test -最終的に任意のアプリケーション作成に取り組む■実務参加に必要な追加研修
・GitHub
・RSpec
・DB応用
・ Ruby/Railsでよく使うメソッド
Linuxコマンドに始まってPHPの基礎、MySQLやDB設計といったバックエンドに関する知識をベースに、具体的なプログラミングスキルを身に付けていく内容となっている。
インターン生には1期・2期の経験者がメンターとして付き、質問や疑問はインターンとメンターとの間で解決していく流れになっているが、さらに高度な課題は現役の社員が対応するという。
「前半が基礎的な知識を学ぶプロセスで、後半がWebアプリを作るというゴールへ向けてより実践的なプログラミングスキルに挑戦していく内容になっています。このカリキュラムを通して、インターンが自分からアイデアを出して新しいWebアプリづくりを手掛けてほしいという思いを反映しています」(大谷氏)
ここで注目したいのが、Ruby on Railsでのアプリ開発を習得する前段階で、PHPでのプログラミングを学習させる点だ。その理由を、南野氏はこう語る。
「インターン1期生の時にはPHPを学ぶ内容が入っていたのですが、2期ではあえて入れませんでした。その両方を経て、インターンたちのその後の成長を見てみると、PHPで基礎的なWebプログラミングを学んだインターン生の方が実際の開発現場に早くなじむというのが分かりました。そこで、カリキュラムを前半・後半に分け、Railsを学ぶ前にPHPでのプログラミングが身に付くような内容にしたのです」(南野氏)
つまり、ただ「プログラムを書くことのできる人」を輩出するのではなく、自ら新しいWebアプリを創造していけるプログラマーを育成するには、Webの仕組み自体を理解してからの方が効果的ということだろう。
プログラミング教育で「つまずきやすい3つの壁」をどう乗り越えるか
メンターは付くものの、「できるだけ独学を推奨している」(南野氏)という理由とは
この特徴以外にも、育成に失敗しないためには「学習ペースを決めてメンターがサポートしてあげることも大事」と南野氏は付け加える。インターン1期・2期生のうち、途中でドロップアウトしてしまう学生が少なからずいたからだ。
南野氏によると、過去、うまくいかなかったケースは次のとおりだ。
【1】 課題1つ1つに期限を設けなかったので、知識・スキル習得レベルが把握できなかった
【2】 知識やスキルの習得にこだわるあまり、実践的なWebアプリ制作スキルが身につかなかった
【3】 デキる人とそうでない人との差やブランクを埋める取り組みが足りなかった
ペースを決めるべき理由は、まさに【1】を解消するため。「45日間」とインターン期間を明示しているのもその狙いがあるという。かつ、【3】の個人差を解消するためには、インターン1人1人の習熟スピードや理解度に合わせたカリキュラムのレベルアップが課題だという。
そこで同社は、1期・2期での長期インターンを通して出てきた「よくある質問」を約200項目ほどにまとめて保管している。この“進化するQ &A”を読めば、たいていの疑問は解消できると大谷氏。
「インターン生はこのQ & Aを参照してできるだけ自己解決し、それでもクリアできない場合のみメンターや社員に解決手段を聞くようにしています。これも、『自ら考えてサービス開発ができるプログラマー』を育成するための取り組みです」(大谷氏)
FiNCでは中途でエンジニアを採用しているほか、このインターン育成プログラムも通年で随時募集し、実施している。モバイルヘルステクノロジーベンチャーとして、人間の心理的な機微まで踏まえてサービス提供していくために、「不足するプログラマーを自ら育成し続ける」という考えがあるためだ。
「プログラミング学習はダイエットと同じく、『継続は力なり』なんです(笑)。インターン経験者のその後を見ていると、良いプログラマーになろうと努力を続けている人は、良いパフォーマンスが出せるようになっています。最初は、良いWebアプリを作ろうなんて夢を持っていなくても、ただプログラミングがおもしろそうという動機でもいいと思います。一度、身に付けた知識やスキルをその後も高めていく意欲や熱意を持ち続けられる人を今後も募集していきます」(南野氏)
取材・文/浦野孝嗣 撮影/伊藤健吾(編集部)