スマートキャンプのエンジニア今川(@ug23_)です。
今月3日から6日にかけて産業技術大学院大学のenPiT2プログラムの一環である、 enPiT2 PBL基礎・夏合宿「アジャイルチームキャンプ」(以下、夏合宿)に社会人メンターとして参加してきました。本記事ではその参加レポートをお送りします。
会社側には業務として送り出していただきました。任意で受講するenPiT2の受講生たちと直接関われる機会が得られ、直接採用につながらなくても「今の学生エンジニアが求めるもの・流行り」などの情報収集になるし、アジャイル開発を実践していることを伝えられるという会社側へ与えるメリットも説明して最終的には代表OKをいただきました。
enPiTは 高度IT人材を育成する産学協働の実践教育ネットワーク という題がついており、学生時代のうちから実践的なIT教育を行って社会で活躍できる人材を輩出するというねらいのある文部科学省プロジェクトです。とくに、BizSysDという分野は以下のように位置づけられています。
社会やビジネスニーズに対する実用的なソリューションとしてのビジネスアプリケーションやシステムデザインを自ら提案、開発し、顧客の潜在的要求を満たすことのできる人材育成を目指します。
メンターについては、会の中にTDD+モブプログラミングでワイワイする会があることやenPiT2の前身であるenPiTの修了生であり、学生メンターとして参加していたこともあり推薦していただいたようです。
合宿でなにをやったか?
夏合宿自体は9月2〜6日をまるまる使って行われました。 会のざっくりした流れはこんな感じでした。
- 9/2: アジャイル開発とスクラム・スクラム開発体験ワークショップ
- 9/3: TDD入門・TDD+モブプログラミングでワイワイする会
- 9/4-5: スクラムによるプロダクト開発
- 9/6: 全体ふりかえり
会場はコロニー箱根でした。緑に囲まれていたし、空気がきれいだし建物が円形なので行き来がしやすくて最高でした。(まもなく休止になるようです。悲しい)
晴れたり雨がふったりでしたが毎日すごしやすかった!
ソフトドリンクが飲み放題でした。辛いジンジャエールが生姜感がすごくておいしかったです。
事前のよびかけで有志の企業のみなさまから差し入れられたお菓子やカップラーメンが毎日適切な量でデプロイされていました。
メンター陣は、参加大学の先生と学生メンター、社会人メンターという構成でした。
1日目: アジャイル開発とスクラム・スクラム開発体験ワークショップ
私は宿の都合で2日目からの参加だったのでいませんでしたが、座学+グループワークが行われていたようです。
グループワークでは、スクラムのプロセスに則って「機能性のあるオブジェクト」を工作していました。
メンターの手が空き始めると勝手にメンターもやりはじめるという自己組織的な環境でした。
(あとで知りましたがターゲットユーザを私にしたプロダクトが作成されていました)
2日目: TDDライブコーディング・TDDyyχ
テスト駆動Python や 心理的安全性ゲーム で知られる安井力さんによるPythonを使ったTDDライブコーディングでした。
午後には実践ということで、TDDをみんなでやってみよう!モブプログラミングを体験してみよう、ということで普段の「TDD+モブプログラミングでワイワイする会」のフォーマットに則ってモブセッションを体験してもらいました。
夜はLT会があったり、TDD+モブプログラミングでワイワイする会のメンター陣だけでモブをやったりしていました。写真はDiamondというお題をやりきってドデカなダイアモンドを出して余韻に浸るなどをしました。
3, 4日目: スクラムによるプロダクト開発
初日は工作でスクラムを体験しましたが、3,4日目では実際にコードを書いてチーム開発してもらいました。
テーマは自動販売機。CLIでもWebでもなんでもいいから自動でものを売れるようにする何かを作るという感じ。
スプリント0を行って各チーム思い思いの自動販売機を考えるところから。
プロダクトオーナーとスクラムマスターを決めて開発をはじめます。
途中から「メンタリングするときにスクラムマスターとプロダクトオーナーがパッと見でわかるといいよねー」という話になり、1日目の工作用品にあったお花紙でお花を作っていました。お花をつくるのなんて何年ぶりかなという感じでした。
実益とその場にあるものを活かすという考えが進むと、遊びとメンタリングの境界が薄まって最高に楽しい時間になります。 メンター学生関係なくみんなでワイワイやれていた感じがあります。
Sprint5で最後の最後でデグレードによって機能が動かなくなってしまったチームは「テスト書いておけばよかったな」と漏らす場面もありました。小さい単位で失敗を体験できるのは社会人からしてもなかなか貴重な機会だと思います。
会場のフリースペースにはボードゲームやけん玉など自由に遊べるものをデプロイしていたのですが、この夜は一晩中けん玉に興じる人が多かったです。
5日目: ふりかえり
最終日には全体で集まって5日間をふりかえりました。 まずはタイムラインで振り返り。事実と感情を分けて話しあい、その後チームで成し遂げたいTryをあげます。
最後はみんなで一言ずつ振り返り、解散しました。
- 他大学との交流がよかった
- 後期の開発に活かしたい
- けん玉がたのしかった
などの意見がでました。
思ったこと
2日目と5日目での比較ですが、どのチームも1日目とは議論の質が変わっているように見えました。大きい目標を立てるチームになれていることに感銘をうけました。
RSGT2019で楽天の1年目のみなさんが楽天の新卒研修をベースに発表されていましたが、学生はやはり教わった通りにでき、過去の体験に依存せず振る舞えるのでその点が強いなと感じます。例えば1日3回Sprintを回すのは社会人チームでもなかなかできないことだと思います。それを2日で5回やったのは誇っていいことだと思います。
学ぶ場における環境っていいよね、とも思います。チームビルディングのために合宿をやるチームも多いですが、思い切って自由な場でゆとりのある状況にしたほうが学習効果は高まるかもと思いました。このあたりは永瀬先生による設計が大きく寄与している気がします。聞いたら普通に受けたら有料の研修の内容だったようで、enPiTはすごいですね。
スマートキャンプでは?
スマートキャンプのエンジニアチームでは週に1度アジャイルコーチの方に来ていただき、ミーティングやふりかえりを見てもらいながら開発プロセスを改善している最中です。
また、私のいるチームでは可能な限り常にモブプログラミングで開発しようという取り組みをやっています。 隣のチームでもモブをやり始めてスペースが足りなくなったのでモブスペースをもう1つ追加しようとしています。 「画面共有しながらでかいディスプレイに画面移してRubyMine使うとMacのファンが回りっぱなしになるよね」という問題もわかったのでmac miniをレンタルしてモブマシンにしてみようか?という話をはじめています。
「こんなプラクティスがあるよ」というのを受け入れて、それに全力で取り組むことでそのメリットを感じ「当たり前になる」という過程を目の当たりにしていてとても楽しいです。
最後に
これを書くために写真を確保するため参加者全員で共有しているGoogleフォトのアルバムを眺めていたら「最高の夏だったな」という思いがこみ上げて筆がのりませんでした。ようやくこの時間に書き終わりました…w
学生と関わることはややもすると「こちらから教える」という立ち位置になりますが「眺めて直すべき箇所をよりよくするためのアドバイスをする」「解決のための手段をひとつ教えてみる」というだけで勝手に吸収していくんだなというのを改めて実感しました。そして安全に失敗できる場の大切さを感じました。
教えることで学生から学ぶことも多く、教えるスキルの糧にもなったと感じる1週間弱でした。
スマートキャンプでは「テクノロジーで社会の非効率をなくす」ために、アジャイルに改善を積み重ねながらプロダクトを作っていきたいエンジニアを募集しています。