チーム開発って難しい

## はじめに

### この記事何？

部活でiOSアプリを作っている大学生が、部活動の一環としてチーム開発のプロジェクトに参加しました。その中での意見や感想をつらつらと書いていきます。
大半はやらかした失敗話ですが...。

### 投稿者のステータス

- iOS開発歴1年程度
    - 学祭向けアプリ作成経験
- チーム開発未経験
- ~~コミュ力低め~~

### どんなプロジェクト？

- TechBowl協力のもとでスマホアプリ開発
    - TechTrainメンターによる補助が付く
- 期間は4月頃〜12月初頭まで
- 学生メンバーは皆経験歴が浅い
- アプリの仕様
    - 開発者のための雑談ツール
        - 投稿にタグを付けられる
        - 投稿の検索ができる
        - ユーザ情報の共有
    - イベントのお知らせ
        - TechBowl主催のイベントを通知

### チームメンバー

他のチームメンバーも[【User Ver.】TechTrain Advent Calendar 2019](https://qiita.com/advent-calendar/2019/techtrain)で記事を書いているのでリンクを付けておきます。

- 8日目 [TechTrainを利用してチームでアプリ開発をした話（Android編）](https://qiita.com/switch23/items/30ee2a77cc25fdd2fabd)
- 10日目 [開発初心者が8か月間のチーム開発に参加して感じた反省](https://qiita.com/NYuki12/items/f2544932a64190c5ee2f)
- 12日目 [サークルでGoサーバ書いて成長した話](https://qiita.com/tknd/items/0e7396245e3ef4dd34f9)
- 14日目 [【Android】MVPでQiitaアプリを作ってみる・そしてポエム](https://qiita.com/wytk/items/96842fbea1c8093306c5)
- 17日目 [デザインをメインタスクとした人の「SNSアプリプロジェクト」活動記録](https://qiita.com/mirai62/items/b7d8a0939c8a56958ffd)
- 21日目 [TechTrainを利用してチームでアプリ開発をした話（PM/PL編）](https://qiita.com/switch23/items/f5b09be326eae856e1bf)

## プロジェクトで失敗したこと

上でも書いた通り初めてのチーム開発だったわけですが、まぁ何もかもうまくいくなんてこと無いんですよねこれが。というよりも何もかもうまくいかないという方が正しいくらいで。そんなうまくいかなかったことを挙げていきます。

### チーム全体として

#### 仕様決定という沼

今回のプロジェクトでは、学生側からTechBowlへ「スマホアプリを作りたい！」とお願いして企画が始まっていて、スマホアプリの仕様を決めたのは学生側なんですね。これも当然初挑戦、困難を極めることになります。
結果から言えば、この仕様が曖昧なものになってしまい、更にそのまま突き進むことになってしまいました。ではなぜそんなことになってしまったのか。

学生側も仕様の決定が重要なのは分かっていました。様々なことを調べ意見を出し合いながら慎重に決定していきました。そしてプロに見せたら...数々の指摘が飛んできました。学生側がそれに対応することができず仕様が揺らいで曖昧になってしまったのです。
これは学生側が**仕様を固めすぎていたこと**が原因だったと思います。TechBowl側からは「**2割報告**をしましょう」という話を受けていました。簡単に言えばこまめに報告しようということです。そのように言われていてそれでもできなかった理由、これは個人的な意見としてですが、学生側が大人にビビっていたのだと感じています。大人に見せるのだからそれ相応の状態でなければならない、下手に中途半端なものは見せられないという気持ちに知らず知らずのうちになっていたのではないかと。

このように仕様決定に失敗し曖昧になったことで全体の進行が悪くなっていきました...。

#### 他分野との連携

僕コミュ障だからムリ...なんて言葉で片付けられたら楽なんですがそうもいきません。
実際のところ自分がコミュ障だという自覚はありますが、それでも他分野の開発者との連携をしなければチーム開発は成立しません。自分はiOS担当なわけですが、例えば「iOS的にここの部分は変更したい」とか「この部分がちょっと仕様と違くない？」とか大抵は細かなことですが、それを怠ることによって全体の進行に影響が出てくるということを身をもって体感しました。

### 個人として

#### コミュニケーション不足

僕コミュ障だからムリ...(再)。
結局は上と同じことなんですが、こちらは自分についてもらったメンターとのやり取りです。これは今回のプロジェクト特有のものですが、今後のチーム開発にも役立つと思うので反省点を。

簡単に言えば、せっかく教えてもらえる機会なのにそれを有効活用しない自分がバカだという話です。今回のことに限らず、昔から他人に聞きにいくという発想が頭から抜け落ちてる節があるもので...。自分が**どこまでできるのかを示して**、**できない部分は聞く**、こんな単純なことなのに...。そんな自分に落胆するばかりです。

#### 見通しの甘さ

プロダクトを1人で黙々と作るのとチーム開発で作るのは、かかる時間が段違い。これくらいならすぐ終わるでしょとか思ってたら1ヶ月経ってた、みたいなそんな感じでした。
まぁ初めてなのでそこまで想定できなかったと言えばそれまででしょうが、にしても時間を掛けすぎました。これも結局は上で書いたように仕様が曖昧だったせいでもあるんですよね...。

それをひっくるめても今回は時間が足りませんでした。流石に初心者の学生達がこの内容で約8ヶ月は攻めすぎでした。**作業期間のバッファが大事**、そういうことですね。

## プロジェクトで良かったこと

ここまでチーム開発に対してのネガティブキャンペーンしかしてないわけですが、チーム開発を経験して良かったことだって当然あります。悪い部分ばかり書いても仕方がないので良かった部分も書いておきます。

#### 技術や知識の習得

コミュニケーションが不足していたとは言え、メンターと全くやり取りしていなかったわけではありません。アプリ開発を始めて1年程の初心者がプロとやり取りしたら、そりゃ色んな技術や知識を得られるってもんです。今まで気にせず適当にしていた部分への指摘が入ったり、知らない概念を聞いて調べるきっかけになったり、多くのものを得られました。これに関しては本当に感謝しかないです。

#### チーム開発経験

学生としてはこれが最大の目的ですね。なんだかんだ言っても社会ではチーム開発をしていくものだし、いかに苦労しようとも、その経験が失敗経験であっても**経験を積むことが利益になる**ことに変わりはないです。

## まとめ

- 報告はこまめに
- コミュニケーションは積極的に
- 計画には余裕を持つべし
- 何事も経験、挑戦するだけで価値がある
    - **TechTrainを利用しよう！**

## あとがき

軽い感じで書こうかと思ってたら意外と重ためになってしまった...。

なんか流れるように[【User Ver.】TechTrain Advent Calendar 2019](https://qiita.com/advent-calendar/2019/techtrain)に招待されて私の失敗談を書きました。長ったらしくなってしまいましたが、しくじり先生的な感じで読んで少しでも参考にしていただければ幸いです。また、所々に日本語の辿々しさがあるかと思いますが、色々と思い出しながら書いていたのでお許しください。

ほとんど個人的な呟きだけどTechTrainの宣伝さえあれば関係ないよねっ