プログラミング

【総まとめ】テックキャンプ怒涛の10週間を実況!【最終課題編】

だらけている犬

 

※TECH::EXPERTはTECH CAMPに名前が変わりました。

 

こば

こんにちは!未経験からエンジニアへと転職を成功させた、こばです!

未経験からエンジニアへの転職はとても難しいのですが、どうやって成功させたかというと、TECH::EXPERTというプログラミングスクールに通いスキルを身に付けることで転職を成功させました。

10週間のボリュームがあるカリキュラムとなっているテックエキスパートですが、実際の生活を知りたいという方のために基礎カリキュラム編、そして応用カリキュラム編と実況記事を書いてきましたが。

そして、いよいよテックエキスパートでの学習も終盤を迎え、『最終課題編』へと入っていきます!

私たちのチーム開発は、チーム内でいざこざがあったり波乱万丈な内容となっておりますので、ぜひ最後まで読んでくださいね!

 

TECH::EXPERT【最終課題編】

基礎・応用と学習を進めて、これまで経過した日数は約40日、個々の実力もしっかりとついてきました。

最終課題の概要は、スクラムを用いたアジャイル開発で、分かりやすく言うとチームを組んで1つのアプリを開発するような感じです。

このチーム開発では、ポートフォリオ作成・チーム開発の経験を積む・困難に立ち向かうことを目的に実施していきますよ。

どんなアプリを開発するのかというと、『メルカリ』のコピーを作っていきます。

使ったことがある方も多いかと思いますが、これまでに作ってきたLINEのようなチャットアプリやツイッターのような投稿アプリと比べてみても、クレジットを使った商品購入や、SNSでのログイン機能など、実装が難しそうな機能が盛り沢山ですので、これから過酷な日々になりそうです。。。

 

【40日目】チーム発表

この日はお昼頃から最終課題の説明を受け、その後チームメンバーが発表されます。

私たちの期は1チーム5〜6のメンバーで振り分けされました。おそらく基礎・応用でのテスト結果や女性の割合をライフコーチが考慮してチーム編成しているのだと思います。

そして私は男性4人女性2人の6人チームになり、まずはこのチームのスクラムマスターを決めなければなりません。

スクラムマスター

スクラムマスターとは、開発を進めるチームであるスクラムを調整する役割をする人です。スクラムマスターの仕事としては、通常の開発に加えて、チームの俯瞰と開発メンバーの関係調整です。スクラムはチーム全員の主体性が求められますが、特に全体のバランスを見極めることがスクラムマスターに求められます。

スクラムマスターはチームの調整役なので、感情に左右されず、常に冷静かつ客観的な判断ができる方が適任です(技術力は重視しません)。なのでいくら技術力が高い人でもコミュニケーション等に問題があれば適任とは言えませんね。

 

結婚までの独身時代でどのくらい貯金が必要?【おすすめ貯金方法】

ルールと方針を決める

テックエキスパートにおける、チーム開発の目的は以下の3つになります。

  • ポートフォリオ作成のために十分な開発時間を確保すること
  • 有意義な開発の時間とするために、良質なチーム開発体制を築くこと
  • 各々が主体的に開発して、技術的な成長をすること

これらを達成するたに、チームとしてルールと方針を決めます。

私たちのチームでは、以下のルールを決めました。

・コアタイムを毎日10時から20時に設定し、コアタイム以外は個人的な作業をしても良い。
・遅刻等は必ずSlackにて報告。(Slackにはスタンプでもいいので全員リアクションをする。)
・10時に朝礼、20時に夕礼を実施し、問題点や進捗の報告をする

チーム開発を上手く進めていくためにしっかりとルールを決めておかなければ、みんながバラバラに動いてしまい、トラブルの原因にもなりますので、素晴らしい組織づくりの為にルールを統一しておくことは非常に重要だなと思いました。

チームのルールも決まったところで時間も遅くなってきたので、この日は解散です。「明日からのチーム開発、頑張りましょう!」とメンバー全員の気合も十分でした。

 

【41日目】タスクの振り分けと作業見積もり

タスク管理

テックエキスパートではTrelloというタスク管理ツールを使います。

Trelloとは、掲示板のような「ボード」と呼ばれるものの中に「リスト」という単位で各タスクを収納することができ、各タスクはリスト間を簡単に移動させることができ、アジャイル開発のタスクの管理をすることが可能です。

それぞれのタスクはスクール側が用意してくれており、そのタスクに対してチームメンバーを割り振りしていくといった流れです。私たちはメルカリのコピーサイトを作っていきますので、具体的には『DB設計』『商品出品機能』『クレジットカードを使用した商品購入機能』などのタスクが用意されていました。

 

作業見積もり

作業見積もりと聞いて「具体的に何時間かかるか考えるのかな」と思っていましたが、ここでの見積もりは直接の時間で考えるものではありませんでした。代わりにチームメンバー全員が共通の認識として持てるタスクをイメージして、それにかかる作業量を1単位とする方法です。

この説明だけではピンと来ないと思いますので詳しく解説すると、私たちは基礎・応用カリキュラムで同じアプリケーションを開発しており、Twitterのようなアプリを制作した時は、全員「ツイートの投稿機能」を実装しています。これがチームメンバー全員が共通認識できるタスクです。これを「3」として、最終課題に用意されている各タスクがどのくらいの見積もりになるのかを決めていきます。

共通認識できるタスクが決まったら、それぞれのタスクの作業見積もりをおこないます。共通認識できるタスクを「3」とした場合、ひとつひとつのタスクに対して、見積もり点数はいくらになると思うか、全員が自分の思う数字を一斉にポーカーのようにして出し合います。「2」の人もいれば「4」の人もいたりしますが、その上で話し合って合意を取り、数字が決めていくので詳細な推測が可能です。

見積もりはあくまでも推測なので、外れる可能性も十分にありますが、この方法を実施することにより、見積もりを初めてする私たちでもなるべく早く、詳細に推測することができました

 

【41日目】開発開始

テックエキスパートのチーム開発ではアジャイルで開発を進め、スプリントの期間を1週間でチーム開発は4週間行なわれますので全4スプリント、1スプリントでは以下の項目をおこないます。

  • スプリント計画ミーティング
  • デイリースクラム
  • 開発
  • スプリントレビュー
  • 振り返り(スプリントレトロスペクティブ)

スプリント計画ミーティング
スプリント開始時に全員でおこなうミーティングです。具体的には、これから取り掛かる1スプリント分のタスクを抜き出して、具体的にどれくらい時間がかかるかを見積もり、そしてそれぞれの作業は何をもって完了とするかを合意することが目的です。

デイリースクラム
1スプリントで実施すると決めたタスクが本当に終わるかを精査することが目的です。前回のデイリースクラムからやったことと、次回のデイリースクラムまでにやることを報告し、問題点がないかや、自分のタスクは本当に完了しそうかを毎日15分程度話し合います。

開発
チームメンバーそれぞれに振り分けられたタスクに沿って開発を進めていきます。タスク管理ツールとしてTrelloを使用しておりますので、誰が今どのタスクを実行しているのかが明確になります。

スプリントレビュー
スプリントの終わりに、スプリントレビューをおこないます。スプリントレビューとは、スプリント計画ミーティングで決めた計画に対して、各タスクが完了しているのかを確認する場です。定義されている機能が問題なく実装されているか動作などを、ひとつひとつ確認して、問題がなければ完了。問題があった場合は次回のスプリントに持ち越しされます。

振り返り(スプリントレトロスペクティブ)
スプリントレビュー後に30分〜60分ほどの振り返りをおこないます。「今週の良かった点」「改善が必要な点」「次回スプリントで取り組むこと」を話し合い、テックエキスパートの講師たちに報告します。

 

【42日目〜48日目】スプリント1週目

いよいよ本格的に開発を開始します。

スプリント1週目で目標にしたタスクは、DB設計とトップページなどフロント部分です。

まずはメンバー全員でDB設計に取り掛かったのですが、これがめちゃくちゃ難しい!!!

みんなでテーブル設計をするのですが、メルカリにはユーザーの名前や住所などの個人情報入力項目が多すぎて、カラムの洗い出しやデーだとひも付き方を考えるのに苦労しました。特に住所のデータはユーザーが持つべきか、新しくテーブルを設けるべきかというところの最適解が分からずメンバーでああだこうだ言いながら何とか完成形まで持っていきました。

この時点で3日使ってしまい予想より遅めの完成なのですが、DB設計は大きくミスをしていた場合、その後の開発で大きく後戻りしなければならない可能性があるので、テックエキスパート講師のOKを貰わなければ次へと進めません。さっそく私たちは設計したデータベースを講師に提出しレビューをお願いしました。

レビュー結果は「1箇所の修正のみ」予想していたよりも簡単な修正のみだったので、すぐに書き換えてサイドレビューを依頼、そして帰ってきたのが「LGTM!(Looks good to me.の略で合格のような意味です。)」テックエキスパートのカリキュラムではコードレビューを依頼するタイミングが何度かあるのですが、LGTMを貰えた時が1番嬉しいです笑 しっかりとLGTMをもらえたのですが回答には続きがあって「いったんこのDB設計で問題ありませんが、今後開発を進めていく中で変更点が出てくると思います。」と書かれていました。他のチームと話してみると、私たちの設計したDBと全然違い、私たちは最初から100%を狙いすぎて無駄に時間を使ってしまったのだとこの時感じました。

そんなこんなで無事DB設計を終えて、次はHTML・CSSで静的なページを作っていきます。これはメルカリ本家を確認しながら自分が担当するページをマークアップしていくだけ。みんなスムーズに進んでいる・・・と思っていたのですが、あれ?そのタスク完了予定すぎてますよ?

チーム内でのいざこざ

本来ならスプリント1週目で終わらせる予定のタスクをメンバーひとりひとりが持っていたのですが、チーム内の1人が明らかに進捗が遅れていて1週目では終わらせることができないという状況でした。毎日のデイリースクラムで、1スプリントで実施すると決めたタスクが本当に終わるかを精査していたのですが、その人は遅れがあることをチーム全体に共有できず、期限間近になって周りが気付いたという感じです。

これは普通に仕事でもよくあることですよね。仕事の納期ギリギリで発覚して「何で言わないの!」ってこと。

私は遅れそうなら「すいません期限までにできそうにないです。。。」と報告することに抵抗はないのですが、人間いろんな性格があって、「怒られたらどうしよう」って思う人とかはコレが難しかったりします。

本来ならこの問題に対して話し合いなどで対策を考え、再発しないようにするのがベストだと思うのですが、私たちのチームのスクラムマスターを勤めていた人が個人的にミスした人を強く怒ってしまい、ここからチームの雰囲気が一気に最悪になってしまいます。。。

 

初めてのスプリントレビュー

この時点で2人が泣いてしまうほどチームの雰囲気が最悪のまま、初めてのスプリントレビューに挑みました。

最初の方にも説明しましたがスプリントレビューでは、このスプリントで実施すると計画した内容に対して、各タスクがきちんと完了条件を満たしているかをテックエキスパートの講師と一緒に確認する会です。

スプリントレビューの結果、私たちは計画していたタスクの内、半分も完了させることができませんでした。

講師からは「他のチームと比べても進捗は遅いのでこのままだと期間中に納品できないかもしれない。」また、チームのいざこざも講師の耳に入っていたことで「チームの雰囲気も良くないのでまずは、そこから改善してください。」とフィードバックを貰いました。

講師のいう通り、チーム状況は最悪で、進捗も良くないし、何より取り組んでいて全く楽しくありませんでした。

スプリントレビューでボロボロに言われた私たちは、このスプリントの振り返り(スプリントレトロスペクティブ)をします。

・コミュニケーションをしっかりとる為、ランチをみんなで食べるようにする
・チーム内でバディを組み質問や相談がしやすい環境をつくる

振り返りの話し合いで新しく以上、2つのルールを追加しました

 

【49日目〜55日目】スプリント2週目

手を重ね合う

新しくランチ制度バディ制度を導入し、チーム状態を良くしていきたいと挑んだスプリント2週目です。

2週目の初日は早速バディ制度を実施ました。

2人1組のバディーでは、2人で1つのタスクを進めていくので1人1タスクよりも進捗が悪くなるかなと思いましたが、全くそんなことはなくて、むしろ開発スピードが格段に良くなりました。バディとなることで相談する相手が明確になり、質問やすくなります。そして質問された側も同じタスクを持っているので状況把握がしやすく解決までもスムーズになるのです。

そしてランチ制度も取り入れます。

テックエキスパートなんば校は、なんばスカイオというビルの15階で10階にはセブンイレブンがあります。お昼になると「今日は何にする?」とワイワイ言いながらお昼ご飯を買いに行き、そこでプログラミング以外の会話が生まれました。またご飯も一緒に食べるので今まであまり話したことがなかった趣味の話などで盛り上がりました。

この2つはルールとして作りましたが、すごくスムーズに浸透して、無理やりご飯を一緒に食べるとかバディなんかしたくないといった気持ちは全くありません。決まりごとなしで自由にするとチームとしてまとまりがなくなり、逆にルールでガチガチにしてしまうと窮屈に感じてしまいます。ですが自分たちで決めたルールならすごく浸透しやすいんだなぁと感じました!

 

2回目のスプリントレビュー

前回、開発の進捗が遅くチーム状況が最悪だと指摘され、私たちなりに改善をして取り組んだスプリント2週目。改善の効果もあり少しづつ進捗の遅れを取り戻してきました。テックエキスパート講師からも「1週目と比べてチーム状況がとても良くなっていますね!」と褒めもらうことができました!

確かに1週目と比べて2週目はメンバーの会話や笑顔が明らかに増えて、個人的にも楽しく取り組めました。

スプリントレビューを終えての振り返りは、このスプリントはチームの状態もかなり良くなったので、次のスプリントでも同じ内容で取り組むことに決まりです。

 

【56日目〜62日目】スプリント3週目

ここまでチーム状況のお話ばかりで技術的なことの内容はあまり書けませんでしたが、1・2週目は開発うんぬんよりもチーム状態を良くする為の行動にフルコミットしていました。3週目に入りチーム力も付いてきたので、この週は技術的に苦労したことなどを書いていきます。

今回のメルカリで実装する機能で特に苦労したことは「ログイン機能」「投稿(出品)機能」「クレジットカードによる商品購入機能」の実装です。

ログイン機能と投稿(出品)機能に関しては、これまでにも実装したことがありました。しかしこれまではメールアドレスとパスワードを使ったログイン機能で、メルカリの場合はそれ以外にFacebookなどを使ったSNSでのログイン機能を実装しなければなりません。投稿(出品)機能に関して、これまでの実装は画像1枚とテキストのみでしたが、メルカリの場合は複数枚画像、テキスト、商品状態、レディースなどのカテゴリ、商品価格など投稿するデータが一気に増えました。

プログラミングの学習はとにかくトライアンドエラーです。分からないことは調べて、実行してみて、上手くいかず、また調べて、実行するの繰り返しです。同じエラーに何度も悩まされると心が折れそうになりますが、自分で問題を解決することでとても力が身につきます。実際の現場ではお客さんと約束をした納期があるので自己解決だけではなく周りに聞くことも大切ですが、私たちは現場に入る前の練習期間だと思って時間が許す限り調べることができました。

初めて実装する機能はスムーズにいかず時間もかかってしまいますが、スクールに通われたり独学をしている人は、挫けず調べまくった方がいいと思います。ネットには解決の糸口が必ずあって、私たちもこれらの機能を無事実装することができました!

 

3回目のスプリントレビュー

3回目となりスプリントレビューにも少し慣れてきました。この時点で基本的なタスクは全て完了していたので、もしかすれば今回のスプリントレビューで完了報告ができるかなと思っていたのですが、期待しない挙動やエラーが見つかってしまいました。

アプリケーションは絶対にバグを残してはいけないということで、重箱の隅をつつくようにブラウザから細かく挙動をチェックされ改善項目を洗い出します。

盲点だったことが多く自分たちの甘さや未熟さを痛感しましたね。。。

 

【63日目〜69日目】スプリント4週目

スプリント3週目ではアプリケーションの細かな挙動やバグを指摘され、スプリント4週目ではバグ修正がメインと、必須項目であるタスク以外の追加機能実装をおこないます。必須項目以外の追加機能とは、最終課題は「自分たちのポートフォリオにする」ことも1つの目的です。そこでより完成度の高いアプリケーションにするため、なるべく本家メルカリへと近づけていきます。

私たちの場合、必須項目には商品の検索機能はなかったのですが、本家メルカリ同様、商品名や説明文と一致する商品の検索ができるように実装しました。

これはポートフォリオを少しでも良く見せるコツなのですが「ブラウザに表示されているものは全て正常に動くようにしておく」ように意識してみてください。

例えば検索バーがあるのに検索できませんだと、作った側は必須ではないから実装しなかっただけですが、企業からしたら「なんで検索できないの?バグかな?」と思われてしまいます。バグ残しは面接などでめちゃくちゃ突っ込まれるらしいので。。。

他に画面遷移できないボタンは設置しないか、CSSでボタンにポインターが乗ったら×印を出して、画面遷移ができないことを分かりやすくしておくと安心です。

 

最後のスプリントレビュー

3回目のスプリントレビューで指摘を受けた挙動やバグの修正と、追加機能の実装を終わらせ、最後のスプリントレビューへと挑みます。

前回の反省から、自分たちでもおかしな挙動がないか細かくチェックしていたこともあり、無事にLGTMをもらうことができました!

スプリントレビュー後はテックエキスパート講師から「このチームは最悪のチーム状態からスタートしましたが、スプリントレビューごとに雰囲気が良くなっていき、今では他のどのチームよりもチーム力があります。ずっと近くで成長する姿を見てきたので感動しました!」と目に涙を浮かべながら賞賛していただき、私も貰い泣きしてしまいそうになりました。

 

チーム開発の振り返り

チーム開発はテックエキスパート全期間を通して、1番楽しくスキルも習得できた期間になりました。

基礎・応用では個人で学習を進める場面が多かったのですが、最終課題はチームでの開発です。チームメンバーと一緒に悩みながら課題を解決していく感じが、私には凄く合っているなぁと感じました。

実際にエンジニアとして働くようになってからも1人でおこなうプロジェクトなんてありませんし、未経験の場合は技術力どうこうより「一緒に働きたいと思うか」「チームで上手くやっていけそうか」といったところは凄く見られます。これからテックエキスパートを受講される方や、これから応用カリキュラムに挑んでいく方は、個々の技術力だけではなく、チーム力にもフォーカスして見てください!

長くなりましたが、最後まで読んでいただき、ありがとうございます。

以上、やんしたでした!

 

-プログラミング

Copyright© こば夫婦の結婚1年目の教科書 , 2020 All Rights Reserved Powered by AFFINGER5.