ウェルスナビの新卒エンジニアが開発研修をどう進めたのか チーム開発編
はじめに
みなさま、こんにちは!!
サービス機能開発チームに配属された24卒の尾形です。
今年の新卒研修では、新卒同士がチームを組み、お題に対して開発を行うチーム開発研修が行われました。
この記事では、そのチーム開発研修の中で得られた学びや感想を紹介をします。
チーム開発研修の概要
新卒11人が2つのチームに分かれ、出されたお題を2週間で開発しました。
与えられたお題は「プロジェクト管理ツール」で、これに関するシステム要件が提示されました。それ以外の詳細な仕様や設計については、私たちが全て決定することになりました。
開発の最後には、各チームが成果物を発表するLT大会が開催されました。各チームが自分たちの開発したシステムの成果をプレゼンテーションし、評価を受けました。
開発の内容
1.要件定義
お題が出されてから「プロジェクト管理ツール」についてペルソナ設定を始めました。しかし、いきなりどのようなニーズや課題をプロジェクト管理ツールで解決するかを考えても、触る機会が少なかったため苦戦しました。そこで、社員にヒアリングを行い、リアルな要件を洗い出すことにしました。
様々な現場のニーズが出てきたため、ペルソナを「ウェルスナビの全社員」とし、利用状況なども設定しました。こうして洗い出した要件を仕様に落とし込む際、実装可能な機能の中からペルソナにとって必要なものを選び出し、仕様の取捨選択を行いました。
ペルソナの最大の課題は、どこでどれだけ予定が狂ったのかが振り返りにくいという点であり、そこを解決することに重きを置くことにしました。
仕様の洗い出しが終わったら、テーブルの設計をし、データベースの構造を決定しました。
効率や品質を担保するために開発ルールを作成し、プルリクエスト(以下PR)前には社内でも導入されている静的コード解析ツールのQodanaを使用しました。
2.開発
まず、役割分担としてプロジェクトリーダーとタイムキーパーの2役を設定しました。
- プロジェクトリーダーはタスクの振り分けや工数見積もり、PRのレビューを担当
- タイムキーパーは、開発をしながらスケジュールやMTGの時間管理などのタイムマネジメント
- その他のメンバーは、開発をメインに進めるとともに、リーダーやタイムキーパーに対してフィードバック
このように役割分担をすることで、品質とスケジュールを重視しつつ、お互いのスキル向上を目指しました。
万全の準備を整えて開発に着手しましたが、パッケージ構成などの開発ルールが甘く、個人間でバラバラになってしまいました。その結果、マージされるまでのコミット数が25以上、コメントも30を超えるPRが発生し、開発ルールの更新と順守が必要になりました。
また、スケジュールの更新も余儀なくされ、時間があまりないことに焦りを感じていました。
開発途中に、両チームともテストの観点が不明確という問題が発生しました。そこで、開発チームの責任者にお願いして、忙しい中テストについての講義をしていただきました。その講義でテストの重要性を改めて思い知り、当初のスケジュールには無かった主要な機能のテストを行うことにしました。(工数が余計にかかりましたが…)
こうして紆余曲折ありましたが、何とかLTの1時間前に開発を完了しました。
その一部のUIが以下になります。元々予定していたスケジュールと実際のスケジュールを可視化し、比較できるようにしています。このことにより、タスクを振り返りやすくなっています。
バックエンドはSpring Boot、フロントエンドはVue.jsで開発しました。
3.LT大会
研修の最後には、1時間ほどで急いでLT用のスライドを作成し、発表しました。
以下は実際のLTで使ったスライドの一部です。
短期間でスライドを完成させることができ、プレゼンテーションの内容は伝わりましたが、スライドからプロダクトの強みが十分に伝わらなかったとのレビューをいただきました。
2週間の間は毎日全力を尽くしましたが、現場の壁の高さを実感しました。
チーム開発の振り返り
良かった点
- 当初のスケジュールよりズレてしまい、焦燥感を感じながら開発をしたが、期限内に完成できた
- 技術的なことだけでなく、顧客志向やタイムスケジュールなどビジネスパーソンとしてのマインドを意識して開発できた
- メンバーはリーダーのマネジメントに対して、リーダーはメンバーのコードレビューなどお互いにフィードバックを行うことで、スキルを高め合いながら開発できた
反省点
- スケジュールにバッファを取っていたため開発は完了したが、プレゼンが疎かになってしまった
- CTOから、実際の開発では機能の数よりも質が重要というフィードバックをいただいた
- 確かに機能数は多かったものの、目立つ機能がない
- プロダクトとしてイノベーションを起こせるようなものになっていなかった
チーム開発研修を通して学んだ点
- この研修では、『顧客にとって本当に必要なものは何か?』を常に考えながら開発を進めていた。この経験は非常に貴重であり、実際の業務に配属された今も、『より良い価値をお客様に提供するために活かそう』というマインドにつながっている
- 要件定義から設計、実装、テスト、リリースに至る全工程を通じて、開発全体の流れを理解するとともに、実践的なスキルを習得し、各フェーズでの課題に対処する能力が向上した
最後に
このチーム開発研修を通じて得たものは、システム要件とお題以外は自由だったため、技術研修の内容だけでなく、自分たちなりにビジネス研修で培った顧客志向を考えながら開発できたことです。技術はあくまでも手段であり、その手段でどのような人にどんな価値を提供するのかという目的を常に考えながらコードを書くという経験は、私の中のエンジニア像を変えるものでした。
また、技術的に分からない時に、チームの垣根を跨いで同期としてフォローし合い、両チームともプロダクトを作りきったことで、配属後の今も良い関係を築くことができています。
私たち24卒は新卒1期生で、研修も初めての試みだったとのことですが、様々なものを得ることができました。来年度以降は、さらにアップデートした研修になるとのことなので、ご期待ください!!
Discussion