TECH::EXPERT→TECH CAMP (未経験)7~10週間で挫折しない方法(チーム開発)
TECH::EXPERT→TECH CAMP 7~10週間で挫折しない方法
「個人アプリ開発」が終わると最終課題へ進みます。
最終課題はチームで開発します。開発期間は約4週間です。
この課題が完了するとTECH::EXPERT→TECH CAMPから卒業となります。
※(個人アプリ開発)に関しては以下にまとめています↓
チーム開発は個人アプリ発表終了後から開始です。前日までに「メンバーのチーム分けの告知」されます。
キックオフ時にチーム分けはされているのですが、最終課題ではそのチームはバラバラにシャッフルされます。
既に仲良くなってる人もいれば、顔見知りだけど初めて喋る人や全く関わったことのない人など全く新しいチームとして構成されます。
チームの人数は最大で5人構成、少なくても4人です。
さて、どのように振り分けられるのか?
それは技術力のバランスごとに分けられます。
聞いた話では(基礎 / 応用)期間での進行速度、試験の点数で分けられているとのこと。
開発するのは「メルカリ」のクローンサイトです。これを1人ではなく、チーム全員で力を合わせて開発します。チーム開発の楽しさ、難しさを味わえる貴重な期間です。
チーム開発期間中にはいくつか決め事があります。
・アジャイル開発をイメージして開発
・スクラムマスターを決める(チームの調整役)
・スプリントレビューを週に1回実施する
・デイリースクラムを毎日行う
・チーム内で相互にコードレビューを行うなど
(各項目の意味はここでは割愛します)
開発の目的は3つです。
①卒業後の活動のための技術を示すポートフォリオを作るため
②チーム開発の経験を積むため
③わからないこと・エラーなどに立ち向かえる経験を積むため
チーム開発ではどの点が挫折ポイントなのか。
特に②チーム開発の経験を積むための難しさを痛感すると思います。チームでやる意味の共有認識です。
(基礎)(応用)(個人アプリ開発)期間は1人で作っていました。悪く言えば自分のことだけ考えればよかったです。
チームの振り分けは技術力のバランスごとに分けられます。知識と技術の差はありますのでチームとしてどう乗り越えるかが鍵になります。
開発を進めるために、できる人にタスクの比重がかかると勿論大きな負担になります。もしその人がいなくなったら残りのメンバーでやらないといけません。
乗り越えるためにメンバーの努力と根性が必要になります。いかに空間作り、明確なルール作り、良質なチーム作りができても、開発を完了させることがどれだけ難しいか身にしみてわかります。
(実際、私はスクラムマスターでしたが納得のいくチーム開発ではなかったので非常に反省しています)
タスクの振り分けをしたとしても知識と技術がタスクに合わなければ完了できるかわかりません。また、実装におけるテクニック面でどれだけ時間がかかるかの見積もりもやってみないとわかりません。
やってみないとわからないとの戦いです。
チーム開発期間(4週間)で挫折しない方法
チームで100%のパフォーマンスを発揮できるにはどうするか、最終的に何を目指して開発を行うのか、そのために何をすべきで、何をすべきではないのか、その点を考えながら各々がチームマネジメント、各々がスクラムマスターとして意識することが大事だと思います。
(テクニカル部分は今回記事では割愛します)
では、具体的にどうするのか?
チーム目線
・チーム内で決められた作業時間に行く(遅刻しない)
・壁にぶつかったら即メンターを使ってヒントをもらう(解決優先)
・進行で気になる部分があれば必ず意見を言う(任せっきりしない)
・作業の共有を徹底、さらにSlackを適切に使う。
個人目線
・できないことはできないと言う(相談は必ずチーム内で発言する)
・わからないタスクは長考せず時間を区切る。1日を無駄にしない。
・質問は恥ではないし役に立つ。
言いたいことが言えずに全員が合意しない方向に開発が進むのは危険です。上記は当たり前のことしか書いていません。でも、それができない、何が起こるのか分からないのがチーム開発です。
(基礎)(応用)(個人アプリ開発)まで6週間を経験した皆さんはWebアプリケーション開発を行うだけの実力が備わっています。
今回は知識・技術レベルの違うチームメンバーのみで難易度の高い実装に挑戦しなければならないのが今回の課題です。そこで重要となるのが、自ら必要な情報を調べ、自ら実装を行うという姿勢です。
(応用)で「答えを自分で見つけること」を学んだと思いますので、その意識をチーム開発で活かしましょう。
以下応用の記事です。ご参考までに。
そして1番、気をつけないといけないのが「体調管理」です。これは非常に重要です。開発からの離脱を防ぐためにも自己管理もそうですがチーム内でも声をかけあいながら気をつけていきましょう。
私自身がチーム開発を振り返って思ったことは「計画通りにいかない」と言うことです。
どんな綿密に計画を立てても、チーム内のメンバーが離脱することがあります。何が起こるかわりません。自分も何が起こるか分かりません。当初の予定より1人あたりのタスクが変更され、増える。
「完成しないかも?」と不穏な空気が流れる。うまくいかなくて苛立ち、混乱。チーム内の雰囲気も変わります。後半になると時間との勝負。気持ちの負のサイクルでチーム内は最悪の状態に。
と、これは少し大袈裟に書きましたが、実際にそんな光景をみたのは事実です。チーム開発の難しさです。ですが、TECH::EXPERT側も最終課題の説明では「混乱した方がいい。1段階上のエンジニアになるためには絶対に必要なステップです。」と、初めは辛く感じるかもしれませんが何のためにやっているのか、最終課題の意図がわかると挫折しても乗り越えようと思いませんか?
(私のチームは不謹慎ですが合言葉は「混乱しよう」でした)
挫折して、嫌になってチーム開発を途中で辞めたくなってもそれは必要な辛さです。基礎/応用/個人アプリ開発の期間を乗り越えてきたのですから自信をもって戦って、それで玉砕されてもそれがチーム開発の課題です。
最終課題発表会を見学した時に先輩が言ってたことは「最初は足手まといになるかもと思って不安だったけど、その思いだけで最後までチームのために頑張れた」とおっしゃってました。
私が思うのはチーム開発で学べることは1人の時では分からない「立ち位置」だと思います。得意分野と苦手分野を知ることができるし、教えながら引っ張るのか、背中で引っ張るのか、それぞれ個性が出ます。それを知ることができると収穫です。
「チーム開発の経験を積むため」が目的。
補足すると「チーム開発の意味」を理解して「今やってることは自分にとってではなく、チームにとってはどうだろう?」と一つ一つの作業に意味をもたせることが大事だと思います。
また、以前の記事にも書いた「コミュニケーション能力が高い」、「負けず嫌いな努力家」の2つの共通点も持つ人が自分も含めてチーム内にいたら安心してください。挫折するまで諦めないのでチーム開発のテクニカルな面の不安はないと思います。
(分からなければ情報を集めることができるコミュニケーション、分からなくても分かるまで粘る負けず嫌い)
以下、基礎の記事です。ご参考までに。
各々がチームマネジメント、各々がスクラムマスターとしての意識を持てば技術力のバランスなど関係なく、チーム開発を乗り越えられます。
(補足)
チーム開発を進める上で、開始から意識した方が良いことをまとめます。
①「周りを観察すること」=チーム内で完結せずに積極的に他のチームとコミュニケーションをとることで情報共有の輪が増えます。チームの垣根を越えて「〇〇期」全体を情報共有の場にすること。
※ 初期チームメンバーは別のチームにいると思いますので話すキッカケはあります。
② LGTMをもらったらみんな拍手すること。
これは士気が上がります。1人の成果はチーム全体の成果です。拍手を贈る方も贈られる方も本当に気持ちが良いです。
※ LGTMとは「Looks Good To Me」、つまり「自分的にはOKだよ」という意味です。 開発したシステムやコードのレビューが特別問題がなかった場合に使います。チーム開発ではコード確認提出があります。都度提出してLGTMをもらわなければなりません。
以下、私目線の当時のチーム開発の記録です。
他、キックオフから卒業までをまとめていますので興味がある方は以下の記事をご覧ください。
最後に
チーム開発期間に入る前に是非みてほしい映画があります。「インターンシップ」という映画です。Googleが舞台です。
この物語の中でもチームを組むのですがバラバラだったチームが徐々に力を合わせて課題を乗り越えていきます。オススメです。
※以下、卒業後に後悔しない方法です。
卒業から逆算的に見ると参考になると思います↓
最後まで読んで頂いて、誠に有り難うございます。
もしこの記事を読んで良かったと思ったら、
このnoteの “♡”(スキ)を押してくれたら嬉しいです。
また「サポートする」をクリックで(ご支援)頂けたら幸いです。
ここから先は
¥ 100
・(スキ) ボタンは今後の記事作成の励みになります。 ・サポート支援金はフリーランス活動の糧になります。