【体験談】未経験からSEになって1年目で経験した仕事を紹介!

ITの仕事について
転職希望Aさん

エンジニアとして働いてみたいのですが、

いまいち仕事内容のイメージが湧かないなあ。

管理人
管理人

そんなエンジニアに興味を持っている人に向けて、

私がエンジニア1年目で経験した仕事を紹介します!

こんにちは、ブタエンジニアです。

今回はエンジニア1年目で自分が経験してきた仕事内容を紹介していきたいと思います。
エンジニアの職種も様々なものがありますが、今回は開発エンジニアとしての仕事を紹介します。

研修期間+受託案件(入社〜3ヶ月目)

自分が入社した会社はSESの会社です。

SESをエリートネットワークさんの記事で見てみると、

ソフトウェアやシステムの開発・保守・運用における委託契約の一種であり、特定の業務に対して技術者の労働を提供する契約です。
IT業界におけるシステム開発の契約形態には、大きく分けて、

[1]顧客から依頼されたシステムの完成を約束し、納品する
(この場合、顧客は納品物の対価を支払います)
[2]技術者の労働を提供する
(この場合、顧客は技術者の労働の対価を支払います)

の2種類があり、SESは[2]に当てはまります。SES契約では、システムエンジニアの能力を契約の対象とし、客先のオフィスにエンジニアを派遣して(常駐)、技術的なサービスを提供します。

エリートネットワーク

要するに、自社ではなく他社の開発現場に常駐して仕事をする会社ですね。

そして派遣先はSIerの企業になることが多いです。
Sierとは、自社でサービスを持っていることは少なく、他の企業や団体から仕事を請け負ってサービスを作ることで利益をあげているIT企業のことです。
SIerについては詳しいことはこちらの記事を参考に。

研修期間での業務

最初の3ヶ月は研修期間となり、自社内で本やwebサービスを使った自学習期間となりました。

会社から指示された勉強内容を一覧にすると、

  • プログラミング言語の基礎
  • HTML・CSS
  • JavaScript
  • Excel
  • SQL
  • トランザクション、正規化等のデータベースの知識
  • Visual StudioやEclipse等のIDE操作方法
  • 基本情報技術者試験の勉強
  • CUIでのPC操作
  • テストコードの書き方
  • テキストエディタの使い方

などになります。
どれもSEとして必須のスキルですね。

勉強する内容はたくさんありましたが、上記の一覧から特に重要なものは以下の3つになります。

  • プログラミング言語の基礎
  • SQL
  • 基本情報技術者試験の勉強

この3つは間違いなく身につけるべき優先順位の高いスキルですので、転職する前から勉強しておくことをおすすめします。

こちらで初心者おすすめの技術書を紹介しているのでぜひ参考にしてください。

プログラミング言語の基礎

プログラミング言語はそれぞれ得意分野が異なるので自分のやりたいことから探してみると良いと思います。例をいくつか挙げるとこんな感じ。

プログラミング言語                      特徴
Java業務アプリなどの大規模システムで主に使われる。Androidの開発やゲーム開発でも使われており汎用性が高い。
Ruby日本人のまつもとゆきひろさんが開発した言語。Web開発においてRuby on Railsの需要が高い。日本語での情報が多く初心者に優しい。
PythonAI分野で人気の言語。コードがシンプルなため誰が書いても読みやすい。
PHPWeb開発では最もメジャーな言語。WordPressもこの言語で書かれている。

SQL

SQLとはデータベースの操作や定義を行うデータベース言語です。
データベースはIT企業であればどの職場でも必ず扱うためエンジニアに必須のスキルです。

基本情報技術者試験の勉強

自分が3つの中で特に重要だと感じたのが基本情報技術者試験の勉強です。
資格自体が重要なわけではなく、基礎知識の有無がIT業界で働く場合とても重要になってきます。

基礎がしっかり身についていると仕事内容を理解するスピードが全然違ってくるのでスキルが効率よく身についていきます。逆に基礎があやふやなままだと表面的な理解で仕事をしてしまい、応用がきかなくなってしまうので早い段階で基本情報技術者の勉強をすることをおすすめします。

基本情報技術者試験に関しての記事が下記になるので参考にしてください。

初の客先常駐(4ヶ月目〜)

4ヶ月目からは客先常駐での仕事となり、自社の上司と2人で金融系の業務システムを作っている会社に常駐することになりました。

スクリーンショットを貼る打鍵テスト

常駐後はじめての仕事は打鍵テストでした。

打鍵テストとは開発したプログラムが正常に作動するか、実際にブラウザ上で画面を表示させて操作し確認するテストです。それぞれの機能が正常に表示されるごとにスクリーンショットを取り、Excelに貼り付けるという作業を繰り返していきます。

スキルがない新人が現場に入ると、現場に慣れることも含めて打鍵テストを任せられることが多いのではないでしょうか。この仕事でExcelやテキストエディタの扱いを慣れるといいと思います。

開発〜テスト

開発

ある程度現場に慣れたあとは簡単な改修などの開発をやらせていただきました。

具体的には

  • 新規会員登録画面のユーザー入力フォームの作成
  • 入力項目のバリデート処理
  • ユーザーのグレードによる画面遷移の振り分け

といった内容です。


開発を行う流れとして、まず要件定義や基本設計、詳細設計で作成した仕様書を読み込み、今回の案件で実装するべき機能や顧客の要望を把握します。それらを把握した上でプログラム設計を見ながら実装を行います(下記の「V字モデル」参考)。

要件定義、設計に関しては、新人が担当することはあまりないので、この案件では既に上司が作成した仕様書を参照して開発を行いました。

この開発自体は難しいものではなく、HTMLをいじったりセッションを設定したりと1年目でもなんとかなるレベルでした。
また、この開発では同じような機能を2つ同時に進めていたため、自分が片方を担当し上司がもう片方を担当して進めていたので、

※ PM = プロジェクトマネージャー  PL = プロジェクトリーダー

といった流れでプログラムを作っていけたので上司からプログラムの書き方などを学ぶことができて良い経験になったと思います。

テスト

開発が終わると作成したプログラムのテストを行っていきます。

テストではまず作成したプログラムの仕様に合わせてテスト仕様書を作成します。

テスト仕様書とは、システムやソフトウェアが、クライアントのヒアリングをもとに作り上げた要件定義書の通りに機能するかどうか、テストするポイントをまとめたドキュメントです。

Qangaroo

テスト仕様書では

  • テストする機能
  • スケジュール
  • 前提条件
  • テスト手法

などを取り決め、これを元に実際にテストを進めていきます。
テスト仕様書の作成は新人にやってもらうこともあるため、プログラムの要件や仕様を改めて理解するのに役立つと思います。

テスト仕様書を作成後は下記のテストを順に行なっていきます。

  • 単体テスト:実装した機能1つ1つのテスト→メソッド単位、関数単位など
  • 結合テスト:実装した複数の機能を組みわせて行うテスト
  • システムテスト:要件定義で要求された機能全体が仕様書通りになっているかのテスト


システムテストまでが開発者側のテストになり、このあとお客様側で運用テスト(本番環境とほぼ同じ環境で行うテスト)を行って不備がないことを確認したあと、システムのリリースとなります。

単体テスト〜システムテストは打鍵テストで実際のプログラムを動かして進めていきます。
自分で実装したプログラムのテストだと、バグを見つけた場合に開発の仕方がまずかったことがわかるためテストで学べることは多いと感じました。

仕様書作成(8ヶ月目~)

開発したプログラムが無事リリースできたので、別の開発案件に移ることになりました。
次の案件は要件定義まで終わっていたので、自分は基本設計、詳細設計から入ることになり、仕様書の作成を任されました。

基本設計では要件定義で要求された機能、例えば画面のイメージ、ログイン機能などをサブシステムに分割していきます。
サブシステムをIT用語辞典さんから引用すると、

サブシステムとは、大きなシステムの一部を構成する、より小さな単位のシステム。または、あるシステムの補助や予備、代替として用いることができる別のシステム。

IT用語辞典

要件定義で要求された1つのシステムを、機能ごとに分割していくイメージです。

さらに詳細設計ではサブシステムをプログラムに分割していきます。
この開発案件では詳細設計を読めばプログラムがほぼ書けるレベルまで詳細に書いていたので、ここで使用するメソッドや関数も決めていきます。

詳細設計をもとにプログラミングをしていくので、小さなミスでも許されません。
設計のときも上司が書いた設計と照らし合わせて作成していきました。

しかし自分で100点だと思った設計でも、レビューしてもらうとかなりの指摘事項が出てくるんですよね。なので設計、開発ともに

「レビューで指摘をしてもらえばいいや」

という気持ちで成果物を作るとレビューする側も全てのミスを指摘できず結果的に大量のバグを生み出してしまうため、成果物は自分で100点だと思えるものを作るべきと学びました。

まとめ

今回はSE1年目で経験した仕事について書きました。
やはり1年目だとテスターとして現場に入ることが多いと思います。

自分はその後開発や設計をやらしていただきましたが、1年経ってもテストしかやらしてもらえないという話もちらほら聞きます。
正直テストは大事な仕事ですが、プログラミング等のスキルは身につかないため、1年経って環境が変わらないようでしたら(1年でも長いですが・・)転職を検討することをおすすめします。

IT業界は実務経験をわりと重視するので、経験が1年あると未経験の頃よりかなり転職しやすくなっているはずです

自分は最初SESの会社に入社しましたが、そこで感じたSESのメリットデメリットを記事にしたのでぜひ見てみてください。

入社前と入社後のギャップ

入社後に、思ってたのと違う!ってならないよう自分が入社後に感じたギャップを挙げてみます。

仕様書が謎!

プログラミングスクールなどでは仕様書の書き方などは基本的に教えていないため、初めて見る大量のドキュメントに最初は面食らいました。

プログラムのレベルが未経験には高すぎた

プログラミングスクールレベルの技術では業務レベルのプログラムに圧倒されると思います。
最初はほんとに何を書いているかわかりませんでした。なんとか読めるレベルになったのは半年ほど経ってからですね。

開発の期間短い!

エンジニアはひたすらプログラミングをしているものだと思っていましたが、プロジェクトのうち開発に費やす時間はせいぜい2割程度で、あとの8割は設計とテストです。

プログラミング以外の知識もめちゃくちゃ大事

例をあげればきりがないですが、ネットワーク、サーバー、セキュリティ、データベース等・・プログラミング以外で必要な知識がめちゃくちゃあります。上で書いたようにプログラミングをする開発期間は全体の2割程度なので、むしろプログラミング以外の知識のほうが大事かもしれません。

⬇️⬇️⬇️⬇️⬇️Javaエンジニアにおすすめの書籍⬇️⬇️⬇️⬇️⬇️

コメント

  1. […] 【体験談】未経験からSEになって1年目で経験した仕事を紹介!SE1年目の仕事について書きました。harioblog.com2019.04.07 […]