NRIネットコム Blog

NRIネットコム社員が様々な視点で、日々の気づきやナレッジを発信するメディアです

IT初心者(新人)がシステム開発研修に参加してみた

はじめに

こんにちは、入社1年目の林です。

本記事では、IT初心者(Java知識ゼロ+カタカナ苦手(←なぜIT企業に就職したんだ))の新人がシステム開発研修を通じて苦労した点・学んだ点についてお話します。 初めてIT業界に足を踏み込んだ新人が経験した出来事や感じたことが皆さんに伝わると嬉しいです!

システム開発研修の概要

システム開発における上流~下流工程の実践

使用開発ツール : Eclipse

チームメンバー人数 : 20人

【研修の設定】

顧客 : 旅行会社

要望 : ウェブで注文・予約ができるようにしたい(現時点では来店による注文・予約しかできない)、従業員情報・お客様情報(パスワード/メアド/住所/電話番号)の一元管理がしたい

チーム内の役割分担 :以下3チーム。チーム内でも機能によって役割分担をした。

  • ホテルシステム管理(商品の登録/変更/削除)

  • ホテル情報管理(ホテル検索/予約) + ログイン機能

  • メンバー管理(従業員情報・お客様情報の検索/登録/変更/削除)

私の担当機能 : メンバー管理の変更機能

【一般的な開発の流れ】

要件定義→設計(外部/内部)→プログラミング→テスト(単体/結合/総合)→リリース

要件定義 : ヒアリングを経て依頼者側の課題点や要求をすり合わせて理解し、システムの機能や仕様などの方向性を決めていく。

設計 : ユーザー視点で画面仕様の設計(外部設計)と、開発者視点でシステムが正常に作動するために必要なプログラムの設計(内部設計)をする。

プログラミング : 設計の工程で作成された設計書をもとに、実際にコードを書いていく。

テスト : システムを構成する一つの機能が正常に作動するか(単体テスト)、他の機能とデータの受け渡しや画面遷移等が正常に作動するか(結合テスト)、仕様書に沿ったシステムになっているか(総合テスト)を確認する。

リリース : 納品し、ユーザーにリリースする。 (リリース後、本来開発者側はシステムの保守・運用を行うが、本研修では割愛)

開発を通じて苦労した点・学んだ点

ここからは私が特に印象に残る苦労と学びがあった工程を2つ、簡単に紹介していきます。

【1.プログラミング】

IT初心者がJavaで苦労することは自明なので、その点に関しては割愛させていただきます。ただただ有識者の方々に助けていただいたことに感謝です。。よってこの場では他のことについて…

開発を進めていくと、しばしば仕様変更(UIや画面遷移など)が起きるのですが、そういった際にチーム内で適切に情報共有ができておらず苦労しました。主な原因としては、、↓

① 自分の機能を完成させることに必死だった。

② 自分にとっては小さな変更だと思い、後ほど共有しようと思っていた。

①②に共通して、チームプレイなのに周りがあまり見えていなかったことが言えますね。改善方法として、私たちのチームではSlackを活用して改善を試みました。具体策として

  • 共有事項や質問、雑談まであらゆるコミュニケーションを積極的に行う

  • チャンネルルールの作成(リアクションは積極的に, ここは雑談チャンネル 等...)

  • ソースコードのバージョン管理を徹底する(修正したら即共有)

が挙げられます。効果としてコミュニケーションも活発化し、発言しやすくなることで課題改善の方向へと進んでいきましたが、やはり機能結合後のエラーの8割は根本に共有不足があるように思います。ソース管理方法は各チームに委ねられていたため、他チームではGitを利用して効率的にソースコードのバージョン管理を行っているところもありました。研修段階でGitを使いこなせていたことが単純にすごい。

Gitなどのソース管理ツールは、ソースコード変更履歴のスムーズな共有や他の人が行った修正を手元に反映させるといった豊富な機能を活用することで共同開発をより効率的にできるといった利点があります。私たちのチームの場合「個人の意識」に委ねられたようなルールベースで進めていったことが、結果的に共有不足の原因の一つになったのではないのかと思います。

ここで学んだことは主に以下の2つです。

  • チームで動く以上、周囲への配慮やチーム内ルールを決めておくことが重要である。

  • 管理ツールを活用することで、強制的にチーム内の変更点に気が付くような仕組みを作り上げる。

  • 不明点があれば「自分で考える時間」に制限を設け、それ以上解決のめどが立たないようなら「周囲に頼る時間」にシフトチェンジする。

自分で考えることも、質問する勇気も両方大事ですよね。

ちなみにGitに関する記事はネットコムBlogにも多数掲載されておりますので、ぜひご覧ください!↓ tech.nri-net.com

【2.テスト】

最も問題多発したテスト工程!!各々やっと担当機能を完成させ、いよいよ正常に作動するか確認する段階です。

結論、納期時間ぎりぎりまでてんやわんやしていました。ここで、テスト工程で起こった出来事を2つご紹介します!↓

①事前に作成したテスト項目の不足

②結合テスト実施中に、一部ソースコードがマシン上で消えた

特に②は、ソースコードを別で管理しており、それが最新版のバックアップとなったためよかったものの今思い出しても背筋が凍ります(未だ原因はよくわかっていない)。①に関しては、実際にシステムを動かしてみると「あれ?この場合のテスト項目考えていなかった」という場面が多々発生した記憶があります。これはもとをたどれば設計が不十分だったことも原因であったなと思います。

ここで学んだことは主に以下の2つです。

  • ユーザー視点で、あらゆる場合のシステムの動きを想定することが重要

  • バックアップはきちんととっておこう

2つ目に関しては、改めてバックアップの重要性を思い知らされたという印象が強く残ったため、学んだ点として書かせていただきました。

【おまけ】

振り返れば大変な研修でしたが、実は研修講師の方々から大いに褒められた点が私たちのチームにはありました!それは…

チームの雰囲気がとても良かった!!

です(^ ^)

単純に仲が良かったというのも考えられますが、特に、毎日開催していた「お菓子じゃんけん」が大きいのではないかと思っています。

長時間集中して作業するとお腹がすきませんか?私もこのブログを書きながら干し梅を食べています。 私たちのチームでは、昼休みに全員分のお菓子を購入して、じゃんけんに負けた人が全額負担するということをしていました(じゃんけんの参加は任意)。一見「何やってんだ」と思われるかもしれませんが束の間の息抜きとして、とても効果的だったように思います。納品間近でもピリピリすることなく、助け合い精神も強いチームで私自身非常に過ごしやすかったなと感じます。そういったチームを作り上げる必要性や工夫も、こういった経験から学びました。

最後に

最後までブログを読んでいただきありがとうございます!あくまで個人の感想にはなりますが、IT業界を視野に入れている方々にとっては開発の雰囲気だけでも感じ取れるきっかけになればいいなと思います。

私自身まだまだ経験不足で、毎日が勉強です。ですが、この研修を通じて学んだことが今後の糧になればいいなと思っています。

執筆者:林 知世莉  最近果物をたくさん食べています。