島までは遠い

佐藤正志@サークルアラウンドのことが少しわかる場所。プログラマーを育てるトレーナーとして、現役のソフトウェア技術者として、経営者の端くれとして、想うことをつづる予定。しばらくは工事中。

自社のプログラマートレーニングを代表自ら暑苦しく解説してみちゃうぞ(長文注意)

f:id:ms2sato:20180716113308j:plain

はじめに

表題の通りなんですけどWEBページとかではなんとなく軽い感じがしたので、暑苦しく(重要)語ってみようかと。この暑い盛りにさらに体温上げて書いてます。

トレーニング

WEBプログラミング個別トレーニング

circlearound.co.jp

弊社が3年半前に最初に掲げたトレーニングは「WEBプログラミング個別トレーニング」でした。最初のサービスでかつ象徴的サービスです。いわゆる一般のスクールさんとの違いがこのトレーニングに込められています*1。私が持っているスクールへの反抗心の表れとも言えます。

  • 現役の先輩エンジニアがトレーナーとしてマンツーマンで担当者になる
  • 書いてもらったコードは100%先輩が全部レビューする
  • 決まったカリキュラムが無く、受講生からのヒアリングを通して作成する成果物を決める(多くはWEBサービスなど完結したもの。稀に機能の一部の場合もある)
  • 成果物への道のりをGitHubのIssueでプロットしながら進める(最初はトレーナーからIssue立てするけれども、徐々に離れて自分でIssue立てて貰う想定で誘導していく事が多いです)
  • 問題と回答の為のサービスなど「学習専用」の仕組みは用意しない。GitHubとSlackでなるべく実際の現場感を作って進める。

とにかく元々がOJTでやっていたことを再現したかったので、私が当時やっていた「作りながら学んでもらう」をなるべくそのまま移植するイメージです。「丁寧な手順書ドキュメントがあってそれを写しさえすればうまくいく」などというのは本質的な学びではありません。

実務で作るようになったら丁寧な手順書的なドキュメントなどない中で検索をし、試行をし、思考して問題を解決しなければならない。その能力を鍛えずに何を鍛えるというのか。そして、これを今、現実的にうまくやるには人の介入が必要だ

というのが私の考えです。このサービスは始めてから色々と改良を加えながら進んでいますが、基本的な方針は変わりません。そして後述する複数のサービスにそのエキスを分け与えながら進んでいます。

言語や環境を何か決めているわけではないので、相談があってやれそうなら何でもやります。例えばJavaScriptについては弊社の小笠原が得意なこともあって「デザインやコーディングをメインにしている方がJSの能力も獲得していくところ」にフォーカスした形のトレーニングを何度もやらせていただいています。これはかなり好評で、特に昨年後半は延長や再受講の依頼もあり、引っ張りだこでした。 「なんとなくjQueryのプラグインを使って訳も分からず動いていた」というところから「簡単な機能なら自分で書ける」を目標にするもので、必要ならthisやクロージャ等の知識も入れてやっています。

WEBサービスチーム開発トレーニング

circlearound.co.jp

個別トレーニングを始めて暫くして「トレーニングを受けた後の人が実際の現場に入るまで」に必要な事を埋めるサービスを考える必要に駆られました。当時も今も、弊社は現場で活躍できるようになる為の事をするのが大切な方針の一つなので、より実践的な場を作るべきと決め、WEBサービスチーム開発トレーニングを立ち上げました。その為に新たに小さな社内サービスを作成することにし、これを題材にGitHub-Flowを行ってトレーナーと一緒に作成します(場合によっては弊社の関係している業務委託の人が一緒だったりしている時期もあります)。

この試みは当初全く引き合いがなく鳴かず飛ばずでしたが(自信あったのですが...)、個別トレーニングからステップアップで上がっていくスタイルとしても用いられます。このトレーニングを介してナチュラルに弊社流の開発を学んでもらいます。シンプルなGitHub-Flowとラベル中心の開発、Issueのこなし方や質問の仕方などを実際に進めながら経験できるので、受講生と言うよりチームメンバーになってもらう雰囲気です。もちろんサービス自体は社内で毎日利用しているものなので、それなりの責任感を持って当たってもらいます(実際止まると弊社メンバーはとても困ります)。

過去このトレーニングを十分に受けた人は初期ではフリーランスとしてそのまま独立していく事ができ*2、最近ではその成果をポートフォリオの一部として転職活動を成功させている方もいます。チームでの開発経験があるかどうかは一つ大きなラインだと私は思います。

初心者向けWEBプログラミング個別トレーニング

circlearound.co.jp

「初心者向け」とあえて銘打ったのは以下の理由からです。

  • 完成するものを限定しています。簡単なBBSの作成を通して全体像を学ぶものです。
  • PHPで「初めてのサービス開発」を成功させるところをイメージしています。

「なるべく簡単にサービス開発を経験したい」という要望はトレーニング開始当初から起業志望の方やコーダーの仕事をされている方から受けることがあり、こういった層にどんなことができるかを弊社の1号社員である齋藤と相談する中で生まれたものです。齋藤が入ってきて最初の自社サービス主担当だったので、思い入れは深いサービスです。二年前くらいは引き合いが多かったのですが、その後Rails需要に押されて若干しぼんできているものではあります。

どんどん進めれば単なるオープンな掲示板をログインできるものにしたりなど改造していけるので、個人的には費用対効果の高いサービスだと思います。カリキュラム型に近い進め方を試した結果でもあります。

RubyClimbing

circlearound.co.jp

上記のような本格的なトレーニングをやっている中で、世間が変化してきたのか「将来的には職業にしたいけれど、これからやろうとしていて指針が無く辛い」という層の連絡が増えてきました。特にRailsが流行り始めた影響で「Railsで」という限定も増えてきた為、弊社がオフィスを単独で構えたのを機に小笠原に考えてもらったのがこのサービスです。

個別トレーニングを進めるのにまだ基礎の足らない人に勧めていたUdemyの動画や、新たに作った言語学習のコンテンツなどをまとめあげて「会社帰りの会社員でも駅前留学のごとく勉強できるようなもの」としてスタートしました。

もちろん個別トレーニングほどのコストをかけずにやれるように作ったので、お値段的にも格安にはしましたが「カリキュラムに沿ったドキュメントを渡して写せばいい」というようなことを許さない形で、主に小笠原が教官として週一回の訓練を担当しています。理解度の確認は人と問答を通して行う方が良いので、この形式は崩していません。

この内容をシッカリマスターするだけで、力技だとしても、自分で考えて作りたいものがある程度作っていけることを目指しました。最低でもWEB開発のポイントを抑えられるように設計しています。Railsで開発できることを目指したものではありますが、WEB開発に無くてはならない基礎知識が凝縮されて詰まっています。

今では実力が不安な場合には、個別トレーニングを受ける前にRubyClimbingの2週間無料の期間中で実力を見極め、その上でコースを選択できるようになりました。適切な段階を踏んで学習する方が効果が高くなるので、こういったステップ化は大切であったと思っています。

iOS個別トレーニング

circlearound.co.jp

WEBプログラミングの枠組みで、SwiftによるiOSアプリの指導を外部の講師にお願いしました。担当の小橋さんが超有名サービスのアプリ開発をされていた方なので実力は保証できます。また人柄もとてもよく、察してアドバイスをくれますよ。今後もWEBサービスの開発に限らずトレーニングの幅は広げたいと思っています。

ただし付け焼き刃でやるのではなく、現役でその技術を日々行使している人にトレーナーをお願いしたいですし、個別トレーニングのマインドに合致する講師をお招きしたいと思います(立候補いたらぜひ!お話聞かせてくださーい)。

トレーニング全体的な話

個別トレーニングを始めた当初は特に言語もレベル感も決めていませんでした。中・上級者の声かけでも「私が対応できるものであればなんでも対応しよう」という気持ちでいた為です。実際に市場に出した時にどんな反応が返ってくるのかを見て、行先を決めようとしていました。

3年半続けてみて、現在の市場は転職する際の支援をするのが需要として適切であるらしいという事と、弊社がスタートアップや新規事業の開発受託も行う都合上Ruby on Railsを扱う事が多いため、その成分多めに舵を切っています。

とは言え特に初学者とか就職に限定することなく、既に現場にいるけれどもスキルアップがうまくできていない場合や、より高みを目指す上での相談も受け付けています。近場に師匠的な人が見つからない人であれば誰でもお話聞いてみたいです。あまり表に出していませんが、主にお知り合いの法人さんに法人向けプランを作って提供したりもしていました*3

受講した人の話はこの辺りに入っているのでよかったら見てみてください。 circlearound.co.jp

特徴やその理由

月額モデルである理由

現在のトレーニングは全て月額モデルにしていて、終端期間を基本的には決めていないものです。その理由は下記のような考えによるものです。

  • 「早く成果を出して卒業したい」というモチベーションを作る為*4
  • 個人によって「合う、合わない」があると思うので、途中で離脱する事が容易な形にしたかった為
  • 完遂までの期間がそれぞれの人で異なるので、それに合わせるには期間を決めずに推進する事が良いと考える為
  • 先に高額を取るモデルは、経営者の私が初心を忘れれば「とりあえず入学させて諦めさせて利益最大」という邪悪なやり方になるので、それを防ぐ為

面談などする上で大抵「どれくらいの期間かかりますか?」と聞かれるのですが、この質問が実は一番厳しいです。「大抵これくらい」というのはなんとか伝えることはできても、その人が本当にその期間で終えるかはわかりません。なるべく「教えたという事実」を提供するのではなく「理解獲得したという事実」を提供したいと思うのですが、簡単では無いなといつも感じます。

担当の先輩が育てるモデルである理由

私がプログラマーとしてのキャリアの中で様々な開発メンバーのOJTをこなしてきた経験をベースに以下のように考えているからです。

  • 「こいつを一人前にしたい」という意思のある人が育てていく事が重要であるから
  • 速度を上げて実力を引き上げるには、対象がまだ得ていない概念や哲学を持っている人が適切であるから
  • 「相手が何に躓いていて、どういう示唆を与えればその壁を超えるか」を考えられる人であるべきだから

だから、カリキュラムを覚えた人を即メンターにするようなモデルは行いません。それくらいハイレベルなことをトレーナー陣には要求しているし、学習も求めるし、実際それに応えてくれていると思います。そういう意味で弊社のトレーニングは格安で提供していると自負しています(「現場で普通に活躍できる能力を持つ人が、マインドを持って他者の能力アップの為に接する」というのが実際稀有であることは、現場で働いたことのある人なら容易に想像できることでしょう)。ここまでの背景を伝えることが難しいので、単なる割高なサービスであると思われるのだろうとは感じています。

もちろん企業努力として価格を下げることを考えて実行した結果が RubyClimbing などに現れています。

おしまいに

とにかく思いの丈をぶつけてみました。暑苦しくてごめんなさい。 もしもこの文章を読んでのぼせそうな程体温が上がった人がいたら、今度弊社のトレーニングについて皆さんにお伝えする場所を設けたので話し聞きにきてくださーい。

techdrive.connpass.com

*1:大きな意味では同じ領域にいるのはわかるんですが、自分としては全然違うことをやっているつもりなんですよね。カリキュラムとドキュメントを写して学ぶこととは違うことを鍛える目的なので

*2:もちろん受講生本人の努力もありますし、フリーランスは単純に技術力だけでもないので、どなたにでもやれる事だとは思っていません。

*3:どんな人が受講する予定で、何を求めているかなどヒアリングさせていただき、合致すれば進める形です

*4:実際には「卒業」という明確なラインが敷かれるのではなく、成長実感と満足により私たちが不要となることを目指しています