新卒入社後、初めてプロジェクト配属されてからの1年間の振り返りをしてみた。


自己紹介

 ・文系の4年生大学を卒業後、2019年春に新卒未経験で主にSES事業を主軸と
  しているIT企業に入社
 ・入社から3ヶ月間の研修を受講(IT基礎、プログラミング(C言語, Java,
  HTML, CSS, PostgresQL)
 ・研修後、昨年7月〜現在まで以下に記載のプロジェクトに参画中

配属先のプロジェクトの概要

 ・C#・SQLiteを使用した保険契約に関するWindowsデスクトップアプリの
  開発プロジェクト
 ・ウォーターフォールモデル型開発
 ・昨年7月から詳細設計→実装→単体テスト→結合テスト→総合テストの順に工
  程を経験(来月7月からは受け入れテスト)

各工程の概要・経験したこと・所感

(1)詳細設計 

○詳細設計とは?
 ・開発者や内部者に向けて書類を作成し、実際にどのような開発を行いプログラムを動作させるかを決めていくフェーズ。

○経験したこと
 ・前工程(基本設計)の成果物である外部設計書を元に、内部設計書を作成(7画面分を担当)しました。

○所感
 ・初めて現場に配属されてすぐの頃であったため、最初はわからないことだらけでしたが、わからないことを自身で調査したり上長に相談して地道に一つずつ問題解決することで、問題なく業務を遂行できるようになって良かったです。
 ・外部設計書はクライアント目線で作成されていたが、内部設計書はプログラマー目線でプログラミングすることを前提に考えて作成しなくてはいけないので、まだまだ開発経験が乏しい私には最初のうちは難しいと思うことが多かったです。しかし、業務と並行して、業務外の自主学習でプログラミングの勉強をしていたことで、システムの機能が正常に働いたパターンや異常パターン、詳細な処理フローを考えることができるようになり、次第にプログラマー目線で設計書を作成することができるようになりました。

(2)実装

○実装とは?
 →基本設計や詳細設計の成果物である設計書を元にプログラマーが実際にプログラミングしていくフェーズ。
○経験したこと
 →外・内部設計書を元に各画面のプログラムを組んでいきました(自分の担当7画面+他担当の画面2画面)
○所感
・C#・SQLiteを使用したプログラミングは自主学習で事前に勉強していたが、各画面のプログラミングの中で今まで使ったことがないメソッドや書いたことがない処理があり、最初のうちは戸惑いました。ここでも地道に調査・上長に相談することで一つずつ問題をクリアでき、自身の担当画面の実装を危なげなく終えられました。
・また、いち早く担当画面の実装ができたことで他担当画面の実装も任せてもらえて、担当画面以外の画面や機能について理解が深まったので勉強になりました。

(3)単体テスト

○単体テストとは?
→プログラミングして完成した機能や画面単体がエラーなく設計書通りに動作しているのか確認するフェーズ
○経験したこと
→自分がプログラミングした担当画面(7画面)の単体テストを実施するための単体テスト仕様書を作成して、それを元にテストを実施したり、テスト証跡や障害一覧などのエビデンスを作成しました。
・仕様変更や障害対応に伴うプログラムや設計書の修正・テストの実施
○所感
・外・内部設計書通りにプログラムが動作するか、テスト項目やデシジョンテーブルを使ってテストパターンを作成するなど、地道な作業が続きミスがないように気を付けながら実施するのが大変でした。

(3)結合テスト

○結合テストとは?
・単体テストでテスト済みの機能や画面同士を連携させて、エラーや設計書通りに動作しているのか確認するフェーズ
○経験したこと
・自分の担当画面(7画面)と他画面(4画面)の結合テスト実施、テスト証跡や障害一覧のエビデンスの作成を担当しました。
・仕様変更や障害対応に伴うプログラムや設計書の修正・テストの実施
○所感
・自分の担当以外の機能・画面のテストを担当させてもらったので、設計書や画面担当者に問い合わせることが多く、苦労しました。しかし、その反面で担当以外の画面や機能を知ることでシステム全体の理解度を深めることができました。

(4)総合テスト

○総合テストとは?
・システム全体を連結させてその性能を確認するフェーズ。業務シナリオ通りにシステムを動かしていき、エラーなく動作するかを確認します。
○経験したこと
・仕様変更や障害対応に伴うプログラムや設計書の修正・テストの実施
○所感
・これまでの工程でも仕様変更や障害対応がありましたが、総合テスト工程になって一番それが多くなってきたので、プログラムや設計書の修正とテストの再実施など、手戻りでの作業が多くとても苦労しました。また、総合テストは別チームが実施していたため、総合テスト実施を経験することができなかったのが残念でした。

総評・まとめ

・プロジェクトに参画した当初(7月)は、システム開発について右も左もわからない状態でした。この1年間、詳細設計、実装、単体・結合・総合テストと経験してきたことで、システム開発の大まかな流れやシステムが完成するまでにどんなことをするのか、とても勉強になったと思います。
・クライアント(プロジェクトのPMやPLなど)に「新卒1年目なのに、経験2・3年の人と同等の成果を上げてプロジェクトに貢献してくれた」と自身の働きぶりを高く評価していただきました。その結果、当初の予定では今年の3月まで(結合テスト工程まで)の契約でしたが、10月まで(総合テスト、受け入れテスト、リリースまで)に契約延長していただくことになりました。自分の頑張りが認められてこれまでやってきて良かったなと感じました。

・今回のプロジェクトは規模が大きく、品質を重視して、ウォーターフォール型でシステムの開発が進められていました。しかし、基本設計工程の時点で仕様が確定していない箇所が多く、テスト工程になってから仕様が確定しプログラムや設計書の修正、それに伴うテストの再実施などが頻繁に行われていました。手戻りが発生しその分工数や手間が増え、現在の工程と並行して作業を行う必要があったため、とにかく各作業がどの程度の時間がかかるのか見積もりを立てて、タスク管理を徹底し、かつ、どんな作業も地道に丁寧に実施することを心がけました。その結果、無事に成果物を納期までに仕上げ、プロジェクトを円滑に進めることに貢献できました。

・今後はさらに要件定義や基本設計などの上流工程を経験し、業務の幅を広げてさらにプロジェクト全体に貢献できるような人材になっていきたいです。