未経験でも卒業時年収920万円、短期集中プログラミングスクールTuring

先日、あるプログラミングの教則本を読んでいたところ、その中で紹介されていた米国コロラド州のThe Turing School of Software & Designというプログラミングスクールの存在を知った。受講者の多くはプログラミング未経験者だが、卒業後の初年度年収の平均額は77,000ドル(約920万円)だという。このスクールのカリキュラムや生徒の選考過程、卒業者の経歴など様々な点で興味深かったため、スクールのWebサイトの内容のまとめてみた。

英語でのコミュニケーションに自信があり、プログラミングに興味がある方は是非挑戦してみてほしい。学費は17,500ドル(約210万円)とやや高めだがローンプログラムも用意されており、卒業後に平均額の年収(約920万円)の仕事に就くことができれば、3ヶ月以内に元が取れる計算になる。

概要

  • 学位や経験は一切不要。
  • Ruby on RailsというWebアプケーション開発フレームワークを用いて、約7ヶ月間のトレーニングを行う。
  • 卒業生の95%は卒業後3ヶ月以内に仕事を見つけている。また通常3つ以上の仕事のオファーを受けている。
  • 卒業後の給与のレンジは65,000ドル(約780万円)から115,000ドル(約1,380万円)、平均給与は77,000ドル(約920万円)。
  • 公開されている就業先としては、ソフトウェア開発・コンサルティング企業のPivotal Labsやthoughtbot、オンラインマーケットプレイスのLivingSocialやアメリカ合衆国国立公園局などがある。

教員、ボードメンバー

エグゼクティブ・ディレクター

  • Jeff Casimir
    • 世界でもっとも長いRailsの講師経験者。(2005年から)
    • RailsConf(Ruby on Railsのカンファレンス)の講演経験者。
    • Draperという100万ダウンロードを超えるRailsアプリケーション用ツールの作者。
ボードメンバー

カリキュラム

  • 1クラスは20から28人。インストラクターと生徒の比率は平均で1対12。
  • 授業はフルタイムで約7ヶ月間。6週間1タームで計4ターム。各タームの間に1週間の休暇がある。

第1ターム

  1. オブジェクト指向プログラミング
  2. Rubyでのコマンドラインツール開発
  3. テスト駆動開発
  4. Rubyの基礎
  5. テストの自動化
  6. リファクタリング

第2ターム

  1. データベースを利用したWebアプリケーション開発
  2. アジャイルによるプロジェクトマネジメント
  3. HTTP
  4. SinatraでのWebアプリケーション設計、開発 
  5. RailsでのWebアプリケーション設計、開発 
  6. MVCモデル
  7. 様々なレベルでのテスト
  8. データベーススキーマの設計、SQL
  9. Gitワークフロー

第3ターム

  1. サードパーティーAPIの利用、APIの開発
  2. 新規システム開発と既存システム開発における相違の理解
  3. Railsでのマルチテナントアプリケーション開発
  4. jQueryを利用したDOMの操作、RailsとAJAXの連携
  5. セキュリティーホールとその防止
  6. Emailの仕組み
  7. キャッシュ戦略とパフォーマンス向上
  8. Railsにおけるバックグラウンドワーカー

第4ターム

  1. JavaScriptの基礎
  2. JavaScriptでのオブジェクト指向開発
  3. 複数のJavaScript用テスティングフレームワークの利用
  4. クライアントサイドアプリケーションの開発
  5. Node.jsでのWebSocketを利用したアプリケーション開発

なおこのコースの他に、フロントエンド開発のカリキュラムもある。そこでは、HTML、CSS、JavaScript(jQuery、React、Ember)、及びNode.jsを利用したリアルタイムWebアプリケーション開発などを中心に学習できる。

入学選考

  • 特定の締め切り日はない。常時応募可能。
  • 現在までに約1,000人の選考を行い、選考を通過したのは全体の8%以下。

一次選考

  1. レジュメ
  2. 文章(コミュニケーション能力と複雑な問題の説明能力を証明する)
  3. ビデオ(自身のパーソナリティーや情熱、感性などを紹介する)
  4. ロジカルテスト(プログラミングの適正を測るための小さな課題を解く)
※一次選考の通過者は4人に1人程度。

    二次選考

    1時間の面接をGoogleハングアウトで行う。プログラミングとこのコミュニティーへの情熱、また共同作業を行う環境での適性などが確認される。

      ※二次選考の通過者は10人に1人程度。

      授業料

      • 学費は17,500ドル(約210万円)、選考通過後1,000ドル(約12万円)を手付金として支払う。
        • なお学費にはMacBookが含まれる。自分のMacBookを持ち込む場合は学費から1,200ドル(約14万円)が割り引かれる。
      • ローンを利用する場合は、いくつかの提携ローン会社を利用することも可能。
      • 本スクール独自のローンプログラムもある。

      卒業生たち

      ※以下は卒業生の一例。個人的に特徴的な経歴だと思った人をピックアップした。

      M. B. 氏、元スクラムマスター。アジャイル開発に共感。

      G. H. 氏、元米空軍軍曹。娘と共作でおとぎ話を作成中。家具作りも行う。

      D. S. 氏、元会計士。クライアントにフォーカスした仕事が得意。

      D. V. 氏、元プロバスケットプレーヤーで、トレーダーを経て、プログラマーに。

      スクールの様子


      rake routesを整形して表示する

      Rails 4からブラウザでもルーティングを確認できるようになったが、私はルーティングを記述する際、対象をgrepで絞り込んで確認するためよくrake routesを利用している。

      ただrake routesは不要な情報が多いため、以下のようにsedで整形してみた。
      ※MacのsedはBSD sedなのでGNU sed(gsed)を利用している。

      以下のようなことを行っている。

      1. 不要になったPUTメソッドの行を削除(Rails 4からPATCHになった)
      2. いちばん左側のPrefixカラム(URLヘルパー名)を削除
      3. 文字列 "(.:format)" 及び "{:format=>.*}"を削除
      4. 各カラム間にパディング(3 spaces)を入れる
      5. root(/)の位置合わせ

      例えば、resources :booksのような定義がある時、表示は以下のようになる。
      ※私は上記のコマンドをroutesという名前でエイリアス化している。

      DHH曰く、fixture名は内容が理解できるものにせよ

      Agile Web Development with Rails 4』のP87(Iteration B2: Unit Testing of Modelsの章)で、DHHがこのようなことを言っている。

      変数名と同様に、fixture名も内容が理解できるものにする。「Fredによる有効な注文」をテストする時は、:product1や:order4よりもproduct(:valid_order_for_fred)の方が分かりやすい。

      :order1ではなく:christmas_order、:customer1ではなく:fredといった命名が習慣化すれば、「:fredが:christmas_orderを注文する際、まず:invalid_credit_cardを使い、次に:valid_credit_cardを使って:aunt_mary(メアリーおばさん)に発送する」というようなストーリーを作ることができる。

      とても理にかなったプラクティスだと思った。他の方がどう考えているかを知りたくて、"valid_order_for_fred"でググってみたが、これに関する意見はほとんど見つからなかった。このやり方に共感する人が少ないか、逆に当然すぎて言及に値しないか、単にこの本があまり読まれていないか、もしくはこの章がtest/unitに関する章のため、RSpecユーザーは読み飛ばしているのかもしれない。
      ※白状すると、私もこの本がScaffoldを多用している、テストがtest/unitである等の理由で今まで読んでいなかった。

      一部を除きほぼ同じ内容のfixtureをYAMLで定義する場合は、defaultデータを定義して「<<:」記法で継承するとよいかもしれない。


      Rails Guidesで紹介されている以下のようなERBを介入させるやり方は見た目が分かりにくいため、役割も持たないエキストラを大量に作る時等、局所的な利用にとどめた方がいいと思う。

      Rails Guidesを整形してPDF化するワンライナー(Mac)

      ※完成後のPDFはこちらにアップ済み。

      いつまでたっても読み終わらないRails Guides。オフラインでも読めるといいんだが、トップページからダウンロードできるKindle用のmobiファイルはスタイルがきちんと効いておらず読みにくい。

      という訳でPDF化してみた。
      まずは、wkhtmltopdfというWebKitでHTMLからPDFに変換するツールをインストールする。

      このツールが非常に便利で、以下のようにURLと保存先ファイル名を指定するだけでPDFが作成される。

      以上。と言いたい所だが、作成されたPDFを確認すると、ページ上部のメニューが邪魔でこれを削除したいと思った。そのため、この部分のHTMLをNokogiriか何かで削除しようと考えていたところ妙案がひらめいた。元データはHTMLなのでsedを利用して不要なdivタグに"display: none"を追加すればいい!

      なお、Mac標準のsedはBSD sedで使いづらいため、GNU sedを利用している。GNU sedのインストールは以下の通り。

      で、肝心のRails GuidesをPDF化するコマンドがこちら。
      ※変数"URL"にはPDF化する対象のRails GuidesのページのURLを指定する。

      これでめでたく上部のメニューは表示されなくなった。
      ※画像やCSSの読み込みにはbaseタグを利用している。baseタグは知らない人が多いので、知っておくと便利だと思う。

      では、何十ページもあるRails Guides全ページをPDF化するにはどうすればいいのか?というと、これもまたsedを利用してRails Guidesのトップページよりリンク一覧を摘出し、それをfor文でループして処理する。for文の中身は先ほどのワンライナーと同じ。
      ※for文自体を無理やりワンライナーにすることもできるが、見にくくなるため複数行に分けた。

      これらのPDFをさらに1ファイルにまとめるにはPDFtkというツールが便利だった。まずは、PDFtkをここからインストールする。PDFtkで複数のPDFを1ファイルにまとめるには以下のようにする。

      Rails Guidesの全てのページがPDF化されたら、最後に以下のコマンドを叩く。

      すると、1ファイルにまとめられたRailsGuides.pdfが完成する。完成したPDFはページ数が700ページ以上もあって驚いた。そりゃなかなか読み終わらないわけだ。