プログラミングスクールを始めた経緯とこれからの話

Ca8b183e3e8cf320dbd76b241bbd6eba?s=47 machida
February 11, 2020

 プログラミングスクールを始めた経緯とこれからの話

2020年02月11日 大江戸Ruby会議08

Ca8b183e3e8cf320dbd76b241bbd6eba?s=128

machida

February 11, 2020
Tweet

Transcript

  1. プログラミングスクールを 始めた経緯とこれからの話 @machida 2020年02⽉11⽇ ⼤江⼾Ruby会議08

  2. ⾃⼰紹介 • 町⽥哲平 @machida • 合同会社フィヨルド所属 • デザイナー • RubyKaigi

    2018(仙台)のデザインをやらせていただきました
  3. 合同会社フィヨルド • プログラマー1⼈とデザイナー1⼈の⼩さい会社 • 2007年12⽉〜(13年⽬) • ⾃社サービスをやりながら受託をやってます @komagata プログラマー @machida

    デザイナー
  4. プログラミングスクール

  5. スクールの概要 • 基本はリモートでEラーニングシステムを使って学習する⾃習形式のスクール (オフィスの空いてる席を受講⽣に開放)。 • メンターは現役プログラマー(教えるプロではなく、プロのプログラマー)。 • 卒業までにかかる時間は900時間くらい(未経験スタート1ヶ⽉で就職は⽬指 してない)。 •

    卒業後、希望者には就職⽀援(無料)。
  6. プラクティス⼀覧

  7. プラクティス⼀覧 課題提出機能

  8. プラクティス⼀覧 ⽇報機能

  9. プラクティス⼀覧 Q&A機能

  10. ⽬指すスキル • 仕事のプロジェクトに⼊ったときに、少しでもプラスの戦⼒として計算できる が⽬指すスキル • 教えるのに⼤量のパワーが割かれて、いない⽅がプロジェクトが進む • コードは書かせられないけどテスト仕様書を書いててもらおう • 他のメンバーの戦⼒は10で、⾃分は1だとしても、決して0ではない

    • 多少の教育コストはかかるけど、レビューをしっかりやってトータルで⾒れば助かる プラスの戦⼒ マイナスの戦⼒
  11. Mac初めて〜⾃作Webアプリ公開 • 学習の準備 • フィヨルドブートキャンプへようこそ! • GitHubへの登録 • チャットを使えるようになる •

    学習の進め⽅を知る • ⽇報を書く • ブログを作る • SNSの登録 • macOS • macOSの開発環境を作る • Terminalの基本を知る • HTML & CSS • HTMLの基本を理解する • Markdown を使って HTML を書く • CSS初級 • CSS上級 • Vi • vi の基本を理解する • Linux • UNIX・Linux について知る • Debianをインストールする • Linux のファイル操作の基本を理解する • 標準⼊出⼒・リダイレクション・パイプを理 解する • apt の基本を理解する • sudoをインストールする • ssh の基本を理解する • SSL/TLS の基本を理解する • HTTP • HTTP の基本について理解する • Cookie について理解する • Nginx • nginx の基本を理解する • nginx で VirtualHost を使って複数のドメイ ンのサイトを⽴ち上げる • nginx で SSL 対応サイトを作る •Git & GitHub • Git の基本を理解する • GitHub の基本を理解する • Pull Request を⾏う •Ruby • rbenv • Ruby初級 • FizzBuzz問題(ruby) • カレンダーのプログラム(ruby) • Ruby中級 • rubocop の使い⽅を知る • rubygems の基本を理解する • rake • Bundler の基本を理解する • ls コマンドを作る • wc コマンドを作る •データベース • SQL の基本を理解する • データベース設計の基本を理解する • PostgreSQLの基本を理解する •Webアプリケーション • REST の考え⽅を理解する • Sinatra を使ってWebアプリケーションの基 本を理解する • WebアプリからのDB利⽤ •Ruby on Rails • Rails の基本を理解する • Rails の i18n を理解する • kaminari を使ってページング処理を実装す る • devise を使ってユーザー認証を実装する • omniauth を使って GitHub 認証を実装する • ActiveStorage で画像アップロードを実装す る • Railsでユーザーフォローを作る • コメントを付けられるようにする •⾃動テスト • TDD の基本を理解する • test-unit の基本を理解する • Railsでテストを書く •Webアプリケーション設計 • オブジェクト指向設計と UML の基本を理解 する • デプロイ • nginxとRailsを連携させる • Capistrano を使って Rails アプリをデプロイ する •CI/CD • 継続的インテグレーション(CI) • 継続的デリバリー(CD) •JavaScript • JavaScript環境の設定 • JavaScript⼊⾨ • FizzBuzz問題(JavaScript) • npm • Linter • Code Formatter • カレンダーのプログラム(JavaScript) • JavaScript中級 •Vue.js • Vue.jsの基本 •システム開発 • アジャイル開発 ∕スクラム を理解する • 開発に参加するための準備をする • 開発に参加して PR を送りマージする • ペアプログラミングを⾏いやり⽅を理解する •Webサービスを作って公開する • どんなサービスを作るかを考える • ペーパープロトタイプを作る • ⾃分で作る Web サービスのリポジトリを作 る • ⾃分で作った Web サービスのデザインレ ビューを受ける • ⾃分で作った Web サービスのコードレ ビューを受ける • Web サービスを作って公開し、使ってもらう
  12. Mac初めて〜⾃作Webアプリ公開 • 学習の準備 • フィヨルドブートキャンプへようこそ! • GitHubへの登録 • チャットを使えるようになる •

    学習の進め⽅を知る • ⽇報を書く • ブログを作る • SNSの登録 • macOS • macOSの開発環境を作る • Terminalの基本を知る • HTML & CSS • HTMLの基本を理解する • Markdown を使って HTML を書く • CSS初級 • CSS上級 • Vi • vi の基本を理解する • Linux • UNIX・Linux について知る • Debianをインストールする • Linux のファイル操作の基本を理解する • 標準⼊出⼒・リダイレクション・パイプを理 解する • apt の基本を理解する • sudoをインストールする • ssh の基本を理解する • SSL/TLS の基本を理解する • HTTP • HTTP の基本について理解する • Cookie について理解する • Nginx • nginx の基本を理解する • nginx で VirtualHost を使って複数のドメイ ンのサイトを⽴ち上げる • nginx で SSL 対応サイトを作る •Git & GitHub • Git の基本を理解する • GitHub の基本を理解する • Pull Request を⾏う •Ruby • rbenv • Ruby初級 • FizzBuzz問題(ruby) • カレンダーのプログラム(ruby) • Ruby中級 • rubocop の使い⽅を知る • rubygems の基本を理解する • rake • Bundler の基本を理解する • ls コマンドを作る • wc コマンドを作る •データベース • SQL の基本を理解する • データベース設計の基本を理解する • PostgreSQLの基本を理解する •Webアプリケーション • REST の考え⽅を理解する • Sinatra を使ってWebアプリケーションの基 本を理解する • WebアプリからのDB利⽤ •Ruby on Rails • Rails の基本を理解する • Rails の i18n を理解する • kaminari を使ってページング処理を実装す る • devise を使ってユーザー認証を実装する • omniauth を使って GitHub 認証を実装する • ActiveStorage で画像アップロードを実装す る • Railsでユーザーフォローを作る • コメントを付けられるようにする •⾃動テスト • TDD の基本を理解する • test-unit の基本を理解する • Railsでテストを書く •Webアプリケーション設計 • オブジェクト指向設計と UML の基本を理解 する • デプロイ • nginxとRailsを連携させる • Capistrano を使って Rails アプリをデプロイ する •CI/CD • 継続的インテグレーション(CI) • 継続的デリバリー(CD) •JavaScript • JavaScript環境の設定 • JavaScript⼊⾨ • FizzBuzz問題(JavaScript) • npm • Linter • Code Formatter • カレンダーのプログラム(JavaScript) • JavaScript中級 •Vue.js • Vue.jsの基本 •システム開発 • アジャイル開発 ∕スクラム を理解する • 開発に参加するための準備をする • 開発に参加して PR を送りマージする • ペアプログラミングを⾏いやり⽅を理解する •Webサービスを作って公開する • どんなサービスを作るかを考える • ペーパープロトタイプを作る • ⾃分で作る Web サービスのリポジトリを作 る • ⾃分で作った Web サービスのデザインレ ビューを受ける • ⾃分で作った Web サービスのコードレ ビューを受ける • Web サービスを作って公開し、使ってもらう レールズ遠い…
  13. カリキュラムは11年前に作成 • 当時、開発チームがない会社で開発チームを⽴ち上げる⼿伝いをやってた • 採⽤した⼈が会社の業務に無理なく⼊れるように研修を⽤意(GoogleCodeで 管理) この研修のカリキュラムがスクールの元

  14. https://code.google.com/archive/p/web-programmer-tutorial/ まだあった

  15. チーム開発もやってます • ⾃作Webアプリと同時に⾏う最後の プラクティス • スクラムで実際に⾃分たちが使って るEラーニングシステムをチーム開発 • 1スプリント1週間、ビデオチャット でふりかえり・計画MTG

    • ソースコードもIssueもふりかえりの 議事録も公開 • 20ポイント分のIssueをやったらこの プラクティスは完了
  16. ミートアップ • ⽉に⼀回ミートアップ • 毎年11⽉のミートアップは忘年会 • 東京に来れない⼈⽤のオンラインミートアップも企画中

  17. 会社説明会 • 対バン形式で複数の企業様に会社説明をしてもらい、みんなで酒を飲みながら それを聞くという、ものすごくカジュアルな会社説明会。 • ⽉⼀のミートアップでは企業様にスポンサーをしてもらい、スポンサータイム に酒を飲みながらその会社の説明を聞く。

  18. 就職希望先には成果物を全て公開 • 受講⽣が就活するときは、就職希望先に⽇報、プラクティスの提出物、スクラ ム開発で担当したIssueなど全て公開。 • 履歴書や職務経歴書より採⽤の判断に役⽴つはず。

  19. スクールの前⾝は インターンシップ制度 2012年03⽉〜

  20. インターンをやろう 当時も相変わらず社員総数2⼈ • 受託案件をやりながら⾃社サービスを運営するのは結構⼤変。 • でも、⾃社サービスが儲かってないのでお⾦は払えない。 • 何か⾯⽩いことがしたくなってきた 。

  21. インターンを集めるには? • こんなマイナー弱⼩企業に希望者が来るはずはないので、インターンをやるこ とのメリットを提⽰しなくては。 • そういえば前に作った研修はOSSだった!これを使ってプログラムが学べるイ ンターンをやろう。 • 2012年03⽉インターン募集開始

  22. プログラミングが学べるインターン スクール アルバイト … お⾦を払って教えてもらうもの … 仕事をしてお⾦をもらうもの 1週間おきに学習週と作業週をやるインターンで No学費、No給料 学習週

    作業週 お⾦を払わず学べる お⾦を払わず⼿伝ってもらう
  23. プログラミングが学べるインターン スクール アルバイト … お⾦を払って教えてもらうもの … 仕事をしてお⾦をもらうもの 1週間おきに学習週と作業週をやることで No学費、No給料 学習週

    作業週 お⾦を払わず学べる お⾦を払わず⼿伝ってもらう インターン時代に
 Eラーニングシステムを作ったり、 ミートアップ開催するなど、 今のスクールの仕組みを徐々に構築 ところが、どうしても 解決できない問題が発⽣
  24. 育ったらいなくなる • 僕らの仕事を⼿伝ってもらうようになるためのカリキュラムなので、そりゃ実 践的な内容になる。 • 僕らの役に⽴つなら他の会社でも役に⽴つ⼈になってる。 • なので、いざ育つと「インターンなんかやってないで就職しなよ」と⾔ってし まう。 •

    結果、あんまり⼿伝ってもらえる期間がない。 • まぁ、その後、みんな幸せなプログラマーライフを送ってるのでこれはこれで いいや。
  25. 育ったらいなくなる • 僕らの仕事を⼿伝ってもらうようになるためのカリキュラムなので、そりゃ実 践的な内容になる。 • 僕らの役に⽴つなら他の会社でも役に⽴つ⼈になってる。 • なので、いざ育つと「インターンなんかやってないで就職しなよ」と⾔ってし まう。 •

    結果、あんまり⼿伝ってもらえる期間がない。 • まぁ、みんな幸せなプログラマーライフを送ってるのでこれはこれでいいや。 会社としてメリットがあまり無いので、 おおっぴらには宣伝せず細々と続けていた
  26. インターン終了
 そしてスクールへ 2018年01⽉23⽇〜 2012年3⽉インターン開始 → 2018年01⽉23⽇スクール開始

  27. きっかけは RailsDM • インターン卒業⽣が続々とプログラマーとして就職し、少しRubyコミュニ ティ界隈でフィヨルドインターンが噂になるようになってきた。 • Rails Developers Meetup #6

    でインターンについて発表する機会をいただいた (2017年10⽉19⽇)。 今まで細々とやってた活動が表に
  28. ビジネス化のお話をいただく • ビジネス化に協⼒してくれると⾔ってくださる企業様 • お⾦を払うからインターン卒業⽣を紹介してほしいと⾔ってくださる企業様 • 研修に使いたいと⾔ってくださる企業様 はーい ビジネス化やりまーす

  29. インターンからスクールに • 学習週、作業週の仕組みは廃⽌ • 学習だけになったので、結果、スクールになる • 学費は無料 • 僕らが紹介する会社に就職をすることが条件 •

    学費の代わりに就職先の会社から紹介料をいただく
  30. なんで無料にしたの? • 今までたくさん⾯⽩い⼈との出会いがあったんだけど…

  31. なんで無料にしたの? 彼らのような⼈と出会う機会をなくさないため 有料じゃ絶対来ないタイプの⾯⽩い⼈もいる • 今までたくさん⾯⽩い⼈との出会いがあったんだけど…

  32. FjordBootCampスタート 2012年3⽉インターン開始 → 2018年01⽉23⽇スクール開始

  33. スクールの有料化 2019年05⽉01⽇〜

  34. 無料、無理だった… • 無料なので始める敷居も辞める敷居も低く、ほとんどの⼈が続かない • 辞めるまで割いたリソースは無駄になる • 勝⼿に就職する⼈が続出 • せっかく決まった内定を取り消させたくはない •

    仕⽅なく泣き寝⼊り
  35. 無料、無理だった… • 無料なので始める敷居も辞める敷居も低く、ほとんどの⼈が続かない • 辞めるまで割いたリソースは無駄になる • 勝⼿に就職する⼈が続出 • せっかく決まった内定を取り消させたくはない •

    仕⽅なく泣き寝⼊り これじゃビジネスが成り⽴たない…
 精神的ショックも⼤きい
  36. 勝⼿に就職して すいませんでした

  37. いいってことよ

  38. お詫びに
 これを受け取ってください

  39. 悪いね〜 ありがとね〜

  40. 悪いね〜 ありがとね〜 いつかこんな⽇が来ることを
 妄想するなどして精神を安定

  41. ついに有料化 • 令和初⽇の2019年5⽉1⽇に⽉額のサブスクに変更。 • 就職に関するルールは全て削除。 • 就職⽬的じゃなくてもOK。 • 僕らが紹介する会社以外の会社に就職してもOK。 •

    新ルール • 就職先企業が紹介料を払ってくれた場合は、学費を最⼤半年分キャッシュ バック(※有料化になってからの受講⽣のみ)。 • 就職したら卒業から、プラクティスを終えたら卒業に変更(その後の就職 相談は無料)。
  42. 有料で変わったこと • お⾦を払ってでもプログラミングができるようになりたいので、みんな本気。 卒業までのスピードが早い! • 就職⽬的ではない⼈も参加。 • 有料化のせいなのか、プログラミングスクールが流⾏ってるからなのか?受講 ⽣が増えた。 •

    ある程度安定した収益が⼊るので僕らのリソースを割けるようになった。
  43. スクールを運営して
 わかったこと

  44. 楽しさを伝えていきたい • プログラミングや開発は楽しいから、早くできるようになって⼀緒に遊ぼう! というノリでインターンをやってきた。プログラミングをやりたい⼈を応援す るのは好きだし、教えるのも嫌いじゃないけど、僕らは「先⽣」になりたい訳 ではない。 • なので、実は「スクール」や「学習」という⾔葉には違和感がある。「スクー ル」になった以上、「学習」させる必要はあるし、いい「先⽣」になる必要も あるけど、やっぱり基本はプログラミングや開発の楽しさを伝えていきたい。

    • プログラミングを好きにならないとスクールを続けさせるのは難しい。逆に、 好きになれば続けられるし、その後もずっと楽しめる。いい「先⽣」が「学 習」させるより、プログラミングの楽しさを教える⽅が効果的。僕らはこっち を強化したスクールにしたい。
  45. https://docs.komagata.org/5588

  46. 僕らが⽬指すこと • 学習中の⼈、メンター、卒業⽣、現役のプログラマーが出⼊りしてて、みんな がそれぞれの形でプログラミングを楽しんでる…というこの場こそが何よりも のスクールの資産であり、その場を提供することが僕らのできる⼀番の価値。 • その場を⼀緒に楽しんでもらうことが、プログラミングの楽しさを伝える⼀番 有効な⼿段で、プログラミング上達への⼀番の近道。 スクールを取り囲むコミュニティを
 もっともっと楽しく⾯⽩いものにしていきたい

  47. Rubyist の皆さん
 ありがとうございます! • FjordBootCamp の参加のきっかけは、Rubyist の皆さんの⼝コミ、ブログ、 Tweet、Ruby コミュニティでの発表、プログラマーの旦那さんに勧められて というのがほとんど。Rubyist

    の皆さんに⽀えられて成り⽴ってます。 • Rubyist の皆さんの期待を裏切らないスクールにしていきます!!(こんなこ とを⾔うのはおこがましいけど、FjordBootCamp が Ruby コミュニティをさ らに楽しいものにするきっかけの⼀つになったらいいなぁ)
  48. ありがとうございました