[筑波大学enPiT] ゼロからチームを立ち上げてプロダクトを作った話
結論
経験ゼロからの開発は大変、でも楽しい!
チームメンバーの成長を感じる体験は自身の成長より幸せを感じた!
チームビルディングは根気が大事!
デスマーチは止めましょう
enPiTとは
enPiTについて公式ホームページより引用します。
筑波大学では、学生が身近な課題を持ち寄り5人程度のチームを作成して課題分析からプロトタイプ実装までを1年かけて取り組むカリキュラムになっています。
私のチームでは「コロナ禍のせいで、やるべきことをやらなきゃいけないのに、手が付かない」という課題を解決するためのアプリケーションを作成しました。
筑波大学ではアジャイル開発の手法の中のスクラム開発を導入しています。1回150分の授業時間が1スプリントと定められており、この時間内に「スプリントプランニング」「開発」「レビュー」「レトロスペクティブ」を行います。このスプリントを20~30ほど回して1つのプロダクトを作成します。
学び1:チームビルディングの難しさ
今回の私のチームは5人の中で開発経験があるのが私1人の状況でした。その他のメンバーはPythonで構造化プログラミングはやりましたレベルでした。それ以外についてはREST APIも分かりません、Webアプリ is 何という状態でした。この状態からプロダクトを作る必要がありました。最初は生HTML+CSSで最小のプロダクトを作るのすら2~3スプリント罹るという状態でした。
最初は課題を解決出来るプロダクトをガッツリ実装することを考えていました。しかし、私はここで方針を切り替えました。私は1年間の目標を「プロダクトを1から立ち上げ最小限のサービスを作るまでの成功体験を得られる」としました。enPiTの主旨であれば、顧客課題を解決するプロダクトを作り、刺さる市場を増やしていくという活動をしなければいけません。しかし、それは強い人達の理想論です。全く何もやったことの無い人が、いきなりするのは無理です。なので、最初に思い立った物を最後まで作りきる成功体験を得る。それを第1にチームを作っていくことにしました。
私たちのチームの進め方
私たちは最初に作りたいプロダクトを考えました。そして、私がそれに対してソフトウェア的設計を考えて、皆に共有します。無論、何も分からない人がこれを見ても何も理解出来ません。その現状から、その内容を理解して1つ1つコマを進めていく。その理想状態と現実との差分を取って各スプリントを回していくという基本スタンスを確立しました。
最初は理想と現実のギャップを埋める方法を考えることすら難しい状態でした。そのため、私がその手段について様々なものを例示して実際に手を動かして学んでいくようにしました。これを繰り返すことで徐々に私のやり方を自分で落とし込んで自分なりのキャッチアップの方法を見つけていくことが出来るようになっていきました。最後はほぼ放置プレイをしてもちゃんと調べて答えを出せるようになっていました(超うれしい)
学び2: 開発が大変だった
何もともあれ、最初はmockサーバーを立てることすらままらない状態でした。そこは上手くごまかしを入れながら実装を進めていましたが、どうしても私が手を貸す場面が多くなっていきました。特にバックエンドはサーバー、プログラムなど登場人物が多いので非常に複雑です。そのため、こういうものがあるよと伝えながら実際に手を動かしたのはほぼ私でした。インフラはAWSでRoute53+ALBで良い感じにSSL化もして、名前解決も出来た(万歳)みたいな構成です。チームメンバーでサーバー構築となると、丸2日はかかりますが私1人だと大体30分くらいで終わります(このギャップを1年で埋めるのは非常に難しい)ただ、根気駆動で1つ1つやり方を説明し続けたので、メインとなるツイッター投稿プログラムは私以外で実装しきりました!これにはとても感動しました(超うれしい)。
enPiTでは時間外労働は基本的に認められていませんでしたが、時間外に実装をしてしまいました。数人分の工数を巻き取るのは大変です。
最後に
enPiTは「チームを、チーム自身がいかに改善していけるか」という点に非常に重いています。私は今まで出来る人達がよってたかって凄いシステムを作るという開発経験はしてきました。しかし、全員初心者の中でファシリテーター、メンター的な役回りも担いながらチームに貢献するという経験は初めてでした。このような開発経験は滅多に得られないので貴重な機会だったと思います。無からチームが出来上がって1つのサービスを作れるに集団を作る経験、とても充実していますよ?
最後に、デスマーチは止めましょう(戒め)