enPiT2019が終わったので、ちょっと記憶が霞む前に振り返りを。

目次

  • enPiTの受講動機
  • enPiTの流れ
  • enPiTの効果
  • 自分の振り返り
  • 最後に

enPiTの受講動機

受講しようと思った理由としては、ソフトウェア演習の授業でチーム開発をやってて「もう少し上手くできたなぁ」と思ってたので、力試し & チーム開発周りの力を身につけるために参加しました。

まぁ、決定打は先輩が「やった方がいいよ!!」と言ってたからですね、はい。 あとは友達が参加するからとかそんな感じ。

enPiTの流れ

ちょっと記憶が曖昧ですが…

  • いつだったか忘れたけどチーム決め
    • 5人1組くらいで学生が勝手に決める
    • チーム内のバランスは結構大事なので慎重に決める必要がある
  • 8月:プロダクトの考え方を学ぶ
    • 産業社会学言論Ⅱという授業でプロダクトを考える方法を学ぶ
    • 実際にプロダクトを作っている方が講師として来てくれる
    • 講義形式のもありますが、大体実際にプロダクトを考えながら学べる
  • 9/1日〜6日:夏合宿
    • 宿に缶詰状態でアジャイル開発を学びます
    • 多分ここが一番楽しい(個人の感想です
  • 10月:開発開始
    • enPiT期間中は毎週デモがある(Demo or Die
    • プロダクトが変わりまくる時期
  • 11月中旬:中間発表(デモ会
    • 毎週のデモとあまり変わらない
  • 12月:ラストスパート
    • この辺でチーム毎の士気に差が出る(気がした
  • 12月21日:最終成果発表会
    • 自分達が開発してきたプロダクトを大勢の前で発表する
    • 懇談会ではプレゼント交換会や立食があったり結構祭りっぽい雰囲気

と、まぁこんな感じだった気がする。

チーム内のバランスについては、自分たちの班はデザイナー4人とプログラマ1人という状態からのスタートだったけど、チームメンバー全員が開発を頑張ったので結局全員がデザイナー兼プログラマという形になってました。

enPiTの効果

enPiTを受講するメリット・デメリットとしては以下のような感じ。

  • メリット
    • アジャイル開発が学べる
    • チーム開発が学べる
    • 開発のために必要な知識が身に付く
    • アジャイル開発のスペシャリストに直接教えてもらえる!
    • 就活に有利になる
  • デメリット
    • 時間が消える

メリットについて

メリットがそんなに書けてないが悔しいですが、自分が強く感じたのはこの3つ。最後のは就活してないのでわかりませんが、先輩や先生方が何度も言っていたので一応書きました。

アジャイル開発が学べる
そのままなのでさらっと説明。夏合宿中の3日間はアジャイル開発についての知識を叩き込まれます。この夏合宿では実際にTDDやモブプロなどの技法を使って開発を行いましたが、楽しい & 実践的なので結構記憶に残っています。

ここで学んだことを10月からのチーム開発に生かして行くことが目標。結構難しかったりするので必死に実践・工夫を繰り返していく。その過程を学ぶことも目的になっていそう。

余談ですが、合宿で記憶に残っているのは宿が綺麗っていうのと夜が祭りだったということ。結構メリハリがある合宿で、昼はがっつりアジャイル開発について学んで、夜はがっつり遊ぶ。けん玉してたりボドゲや筋トレなど好き勝手に遊んでました。 でも休まないと次の日が辛い。 「メリハリってこういうことかー」という学びもありました。

チーム開発が学べる
「チーム開発、うっ、頭が…」という人もいるのでは…?

期間的にはソフトウェア演習と似たようなものですが、一度チーム開発を体験しているので、その時のノウハウ+夏合宿での学びを生かしてチーム開発が行えます。そのためか、問題発見→工夫→改善のサイクルが速く、チームが成長していくという感覚と、どうやったらうまく開発を回せるかという感覚を知ることができました。enPiTは自由参加なのでチームメンバーの士気がそもそも高いということもあると思いますが…。

そんな感じで、チーム開発の手法を学んで実践することができるので、チーム開発を学ぶにはとてもいい機会だと思いました。

開発のために必要な知識が身に付く
これは人によると思いますが、Gitや開発に使用しているプログラミング言語の特徴、さらにはデザインパターンなどを学べるいい機会になったと思います。自分はSwiftで一度痛い目を見ていたので「2度と触るか」って感じでしたが、今回自ら死地へと飛び込んだことで、Swiftが持っている特徴やMVCモデル、インターフェースの設計など、開発のために必要な知識を得ることができました(多分こんな機会じゃなきゃ触らない)。

このメリットには結構周りの人が触れていたので、他の参加者の話も詳しく聞いてみたい。

アジャイル開発のスペシャリストに直接教えてもらえる!
そのままですが、講師の方がとてもわかりやすく丁寧に教えてくれます。自分はあまりできなかったのですが、この機会を存分に使って知識を吸収できるとすごく成長できると思います。

デメリット

時間が消える

自分達の班はコアタイム(グループメンバーが集まって集中的に作業する時間)が週に2回あったけど、始めはその時間で進捗が出ないことも…。残業は良くないと思いつつ、時間を取って作業していた。

あ、あとGE(グローバルエンジニアプログラム)生はGEの授業でもチーム作業があるので、enPiTに参加するならかなり時間に余裕がなくなることを覚悟しといたほうがいい。両立することは無理じゃないけど結構大変。

自分の振り返り

隙自語だけどenPiTを通しての振り返り。

全体的にすごく自分の成長に繋がった気がする。まず、ユーザーを考えたプロダクトを作ったことがほとんどなかったので、自分以外を対象にしたプロダクトを考えることが学びになった。「どうやったらユーザーが求めているものが実装できるか?」、「ユーザーが実際に欲しているものは何か?」ということに焦点を当てての開発は結構楽しかった。自分はPO(プロダクトオーナー)ではなかったけれど、開発者にもそういう視点は重要だと感じました。

ちょっとユーザーに絡めての話ですが…。自分達の班はユーザーを小学4年〜6年生としていて、少し身近ではないユーザーだったことが若干難しかったと感じました。アジャイル開発はユーザーからのフィードバックを何度も貰って開発を行うけど、ユーザーに直接触ってもらう機会を設けるのも、フィードバックをもらうのも一苦労でした(協力していただいた先生、友達に感謝です…)。そのため、enPiTでは「身近なユーザーを想定する」ことや「実際に感じている問題」に取り組むのが良いのかなと感じています。もし「身近ではないユーザーが感じていそうな問題」を想像して取り組むのであれば、「実際にそのユーザーがどれくらいいるのか」や「試してもらえそうな人数はどれくらいか」なども考えて取り組み始めるのが良いと思いました。

また、プロダクト開発中はソースコードを書いた人に逐一「なんでそう書いたの?」的な質問をしていました。進捗を出さないといけないプレッシャーの中で、こんなことを聞く人がいたら面倒だと自分でも思います…。ただ、進捗を出さないといけないからという理由でコピー&ペースト(以下コピペ)が増えていくことはわかっていたので、それを防ぐためにも聞いていました。効果としてはどれくらいあったかはわかりませんが、ソースを理解して書くことでプロダクトの他のコードへの理解も高まり、最終発表ではチーム全員がプロダクトについて説明できるという状態ができていました。

あとは、UIを作る際に、チーム内で意識・認識を合わせるため、GoogleSlideを使ってどんなものを考えているかを逐一共有するようにしていました。コーディング前に確認することで手戻りを少なくすることができたと思います。SwiftUIもStoryBoardも使わずに自分たちでUIViewを使ってView用のクラスを作っていたので、自分的にはスライドで先に考えておくことでコーディングがしやすくなるという効果もあったと思います。

最後に、褒め合いは大事だととても感じました。チームの士気に直接関わることだし、バグが出ても、コーディングを間違えていても大丈夫っていう安心感があるチームっていうのはすごいことだと思う。これは完全にチームメンバーへの惚気ですが…
夏合宿の頃にこの褒めるっていう文化ができたみたいだけど、「褒める」・「拍手」・「笑う」の3つがあれば最強だと思う。心理的安全性が高いチームを作ることも重要だと学んだ。

最後に

長文になってしまいましたが、まだまだ書き足りず、無限に終わらなさそうなのでここら辺で締めようと思います。

enPiTは色々大変ですが、多くのことが学べ、開発もできる良い機会だと思いました(小並感)。

来年enPiTに参加しようと考えている方の参考になれば幸いです。