ソニックガーデンジム
参加者インタビュー
学生・第二新卒を対象にした無料のプログラミング合宿
「ソニックガーデンジム」
。
一般公募で集まった5名の参加者には、課題をクリアし「ジムマスター」の称号を得るため、熱い3ヶ月間を過ごしていただきました。
今回は、4期でジムマスターの称号を獲得し、次の5期ではコードレビューを行う “トレーナー” として参加していただいた2名に、当時のジムの様子についてお話しいただきます。
「ソニックガーデンジムって一体どんなかんじ?」「参加してみたいけど、ちょっと不安…」 という方、ぜひご一読ください!
もし興味をお持ちでしたら、こちらからお申し込み頂けます。
ソニックガーデンジムお申し込み(無料)Twitterで回ってきた宣伝ツイートを見たのが最初のきっかけです。
参加した当時は新卒2年目で、保険の比較サービスを行うWebサイトの運用・改善・保守をRailsを活用しながら行なっていました。
しかし、フロントエンド側の実装やデータ分析など、他の業務も増えつつあり、このままではRailsに触る機会が少なくなってしまうという危機感があったことを覚えています。
通常の業務の中である程度実装はできるようになったものの、更なる技術力向上を目指して、仕事ではない環境でさらに経験を積みたいと考えていたため、参加しました。
僕もTwitterで見たのが最初ですね。
トミーと同じく僕も当時2年目で、ギリ第2新卒でいけるだろうと(ソニックガーデンジムの参加資格は第2新卒まで)。 今逃したらもう来ないチャンスだろうなと思ったのは覚えてます。とりあえず応募課題を一気に終わらせて提出したのが記憶にあります。
1からRailsアプリを作るうえでで、業務さながらの本格的なコードレビューをもらいながらやれたのがすごく良かったですね。
会社だと、どうしても途中からプロジェクトに参加して、過去のコード見つつ開発することが多く、1から作る経験はあまりできていなかったんです。 ジムでは、そこを経験することができました。
さらにジム後は、1からRailsアプリを作った経験で得た視点を、会社でも生かすことができました。
コードレビューでは本当に一行一行丁寧に見てもらえて、充実していました。
ジムの効果を実感したのは、ジムが終わってから、コードレビューする際の観点が増えたことですね。 ジムに参加する前は、コードレビューをする際もとりあえず動作の流れを追うことができればOK、バグったらそのとき考えよう、みたいな感じでしか見れなかったんです。
ところが、ジムに参加したことで、Rails Wayというものをちゃんと考えて、それに則るとここはどう書くべきなのか、この設計はふさわしくないのではないか、という観点から議論ができるようになり、とても効果を実感できました。
また、ジムのレビューではコードの美しさにまで言及してもらえて、自分でも改めてコードの美しさについて考える機会をいただきました。 その結果、「素早く開発するためにはある程度コードの美しさを犠牲にして良い」という考え方に明確に反対意見を持つようになりました。
綺麗なコードを書くことで後々まで開発速度を維持することができ、長い目で見ると良いことが多いと思うんですよね。
現実的には、プロダクトがある程度年数を重ねて、いろんな人の手が入ってしまうと、コードの美しさを維持するのは厳しくなってきてしまうものですけど。
そうですね。ジムでコードの綺麗さについてもしっかりレビューしてもらえて、改めて大事なことだと思えたのが、良かったな。
課題は割とよくある題材で、課題の発表時には、正直「え、これでジムマスターになれるんだ」って思ってたんですけど、初めて出したプルリクに返ってきたコメント数を見て、「これは頑張らないと終わらないやつだ」と思いました。
最初のプルリクには結局90ものコメントがついたんですよね。こんな簡単なタスクにこれほどまでびっしりコメントがつくのか!と驚きました。
僕はプルリクを細切れにするタイプだったので、1つのプルリクあたりのコメント数は少なめでしたが、一番ついてるもので38コメントと言うのがありましたね。 最終的なコメント数では多分同じくらいですね(笑)。
質問しまくって、騒いで進めるのが正解
めっちゃ調べました(笑)。
ジムって基本テキストコミュニケーションになるので、なるべく誤解のないような記述や、為になるようなコメントを意識しました。 会社だったら、顔を合わせるタイミングがあるので、ある程度関係性が築けるんですけど、完全にオンラインコミュニケーションだけになるとそれが築けないので、気を遣いましたね。
あとは、実際の業務だと、全部動かすのが難しかったりしますが、極力動かせるところは動かしてみて、その上でコメントするように心がけました。
僕は4期でレビューを受けて学んだことを試す感じで、あまり背伸びをせず、できる限りのコメントをするという方針で頑張りました。
あとはレビュアーのソニックガーデン社員さんがつけるコメントを見て、学んでましたね。
ヴェルディのリポジトリを通知オンにしてたのが良かったですね。
ヴェルディに限らず他の参加者も全部オンにしてたんですけど、「疲れたなぁ」とか横になったタイミングで、 通知が来て、「あーやってんなぁ」「やばい、やらなきゃ」って思ったり。
もちろん参考になるコメントもあって、それが勉強になるっていうところもあったんですけど、 どちらかというと、自分を鼓舞するために通知オンにしてました。みんなやってるから僕もやろう、みたいな。 あれが自分的に良かった。
そうそう、そういったある種の圧力(笑)や、締切りのようなわかりやすい期限の設定があると、ぐっと走りやすくなりますよね。
ジムはそれを提供するための環境、といっても過言ではありません。
最後の追い込みがやっぱり一番印象的ですね。
自慢できることでもないですが、僕は最後の5日間で5プルリク出してました。 エラーにぶち当たったらわかりませんって騒いで、コメントもらって、実装できたら他のプルリクが Approve される前にどんどんプルリク送ってました。 あまりにもレビュアーの都合を考えていなかったので、「この日はレビューできません、ごめんなさい」って連絡が来たこともありました(笑)。
あと、最近RubyKaigiに出席したんですが、そこでジム生と会ったのが嬉しかったです。そういう知り合いができたっていうのがいいですよね。
履歴見ると、終了日あたりが本当にやばいですね。プルリク満載(笑)。でも結局僕が一番早く完走したんですよね!
質問しまくって騒いで進めるのが、結局一番ジムを有効活用できていたのかもしれません。
実は、ここは運営としてはいろいろ試したところなんです。 当初は自然と参加者間の交流が生まれるものだろうと思っていたんですが、これが全く生まれない(笑)。
ジムに参加するような人たちは、間にプログラムでも挟まないと話さないんだな、ということが分かりました…。
もはやヴェルディとペアプロしてたことも、今言われて、「そういやしてたな」ぐらいで…。それぐらいあまり交流らしい交流はなかったですね。
本当に進捗が一緒だったら、ここ難しかったよな、みたいなのがあるかもしれないんですけど、全員進捗はばらばらだし、隣を見るような余裕もなく、という感じでした。
でもレビューの中では、「他の人がどういう設計してるか見てみたら」っていうことはたまに言われてたんですよ。 それでちょっと他人のソースコードを覗いたような気はします。
トレーナーになった時に、「(他の参加者のソースコードも)見るべきだったんだなぁ」と感じました。 他のとこで言われてるんだけどな、とか思いながら同じようなコメントをしないといけなくて。 他人のコメントを見るのが大切であるというのは、今は分かります。
ジムマスターを目指すとなると、とりあえずプルリクを出してコメントをもらうっていうのが第一になっちゃうんですよね。 なので他の人がどんなコメントをもらっていようが、とりあえず俺はできたところからプルリクを出す!みたいになりがちでしたね。
参加者に他の参加者のソースコード・コメントまで読んでもらう。これはジムの永遠の課題です(笑)。
ジムを極めて、さらに挑戦できる場所がある
そこでどんなプライベートサービスを開発したのか教えてください。
開発したのは、自社の仕事内容をすごろくにして、ゲームを遊んでもらうような形で、会社説明会等では伝えられない情報を伝えるツールです。 Web上で公開されている、さまざまな職種を体験できるすごろくを通して、やりたいことを見つけるきっかけを提供したいと思い、作り始めました。
下記のサイトでサービスの紹介を記載しています。 https://shigoroku.studio.site
管理画面はRailsをメインに作っています。すごろくのフロント部分は、友達がUnityで作ってくれていて、僕は裏側の支えを作っています。
リリースはまだですが、来年を目処に考えています。実際に営業部隊が企業さんともやりとりして進めています。
僕が作ったサービスは、電車の乗り換えに一番便利なドアの番号を教えてくれるアプリです。 アプリ側をFlutter、バックエンドのAPIはRailsで作っています。こちらはもうiOSもAndroidもダウンロードできます。
カバーしてるのがJR山手線だけですが。
もうちょっと対応路線を増やしたいですね。
参加してよかったです。ジムと同様にレビュー頂きながらできましたし、最初の設計段階で、ああでもないこうでもないって、なかなか一人で進まなかった時期があったんですけど、そこをソニックガーデンの社員さんと相談しながら、乗り越える経験ができたのが良かったです。
僕は触ったことのなかった技術としてFlutterにチャレンジしたんですが、レビューもガンガンしてもらえましたし、分からないところもどんどん聞いて助けてもらいながら作りました。 本当にありがたいです。
一人でやると挫折しそうだったんで、みんなで一緒に、期限を決めてできたっていうのは非常に良い経験でした。
自分を試すことができて、確実にスキルが上がる
レビューをする能力が高まったり、Rails Wayと呼ばれるものに対する理解が深まったりして、すごく身になる経験ができたと思っています。
自分の書いたコードをかなりしっかりレビューしていただけるし、一緒に個人開発できるコミュニティを得ることもできたのも大きな収穫でしたね。
プログラミング能力を上げるだけじゃなくて、その先にも広げることができるコミュニティだと思うので、ぜひ参加していただきたいなと思います。
会社以外のところで自分を試せる、スキルを上げられる環境としてはもってこいだなと思っています。
シンプルに技術の向上を目指していけるコミュニティなので、ものすごくやりやすかったし、自分に合っていました。 コードを綺麗に書くというところは、エンジニアだったら絶対気にするところですし、そこを磨く上でもすごく良いコミュニティですね。
正直言えば、最初に参加するのは怖かったんですけど、飛び込んでしまえば、 共同開発にしろ、何作るにしろ、「面白そうじゃん」って言ってもらえるし、 発表でたくさんしゃべっても、しっかり聞いてもらえたし、すごく楽しかったです。
ぜひ皆さん参加してほしいです!