SI企業で身につけたもの・身につけられなかったもの

ヘッダー広告

私は新卒で入社してから、今までSI企業に所属しておりました。
しかし2019年3月から自社サービスを提供している会社、いわゆるWEB系企業に転職することになりました。
転職後に活躍するために、SIerとして身につけられた部分、身につけられなかった部分を整理したいと思います。

前提

仕事内容

私は現在20代後半です。これまで大きく3つの現場で働いてきました。
最初はインフラ系の現場、次はユーザー企業で業務システムの開発(ただしVBA)、最後が大手SI企業に派遣され、金融系のWEBシステム開発を行ってきました。

今回は、特に最後の現場である大手SI企業でのWEBシステム開発の経験を中心に整理していきたいと思います。

SIで身につけられたこと

WEBシステムの基礎知識

最後の現場では、金融系のWEBシステム開発を行っておりました。
以下のような環境です。

バックエンド言語 Java6
フレームワーク 独自フレームワーク
フロント jQuery
DB Oracle
サーバ WebLogic、Apache、postfixなど(オンプレ)
ソース管理 SVN

ただし実際のコーディングはオフショアにて実施しており、私の役割としては要件定義、外部設計くらいまでとプロジェクトマネジメント的な部分がほとんどでした。
テストなどもオフショアにて実施して、日本にいるエンジニアはEXCELに貼り付けられた画面キャプチャーを見てレビューするという典型的なSI企業という感じでした。

そんな状況ではありますが、自分達でテストをすることもありますし、オフショアに対して正確に指示を出さないといけないので、WEBに関する基礎的なスキルは身に付けることが出来ました。

具体的には、GET・POSTの違い、クッキーの用途、セッションとは何か、リクエストからレスポンスまでの流れ、APIとは何か、フォワード・リダイレクトとは、HTTPステータスコード、サーバーごとの役割(APサーバ、HTTPサーバなど)の部分です。

要件からシステムに落とし込む方法

これがSI企業で一番身につけられた部分ではないかなと思います。
ユーザー(最後の現場では金融機関)から何をしたいのかをヒアリングして、今あるシステムにどのように落とし込むのかを考えて、次の工程(外部設計)に引き渡しました。

特にユーザー企業の方は、システムについて詳しくない場合が多く、またどういうシステムを作りたいのかを自分達で決められないことが多いので、こちらから方向性を定めて進めてあげることが重要になります。
(もちろんシステム化したい大枠の部分は決まっているのですが、具体的な機能とかになると実現方法を決められないことが多い。こちらからいくつかの提案をするか、もしくはあえて1つしか提案せずに進めるかなどしていました)

この経験はWEB系企業に転職してからも確実に活かせる部分だと思っています。
システム開発は、開発することが目的ではなく、システムを開発することでビジネスにどう貢献出来るのかが重要です。
これを意識しながら、システム開発すべきところ、すべきでないところを整理して、要件を定義することが出来たのは良い経験だったと思います。
おそらくWEB系企業に新卒で入った場合には、若いうちはシステムを作ることにこだわってしまって、本当に必要なものを作るという意識を持てる方は多くないのではないかと思います。(独断と偏見ですが、、、)

プロジェクト推進力

抽象的な話になってしまうのですが、プロジェクト推進力は身につけられたのではないかと思っています。

SIerではある程度大きな規模のプロジェクトリーダーを担当したり、改善活動を企画して進めるなどを経験できました。
1メンバーとしてではなく、自分が中心となって、周りの人達に協力を促しながら進めるという経験は、なかなか得られないものだと思いますし、今後必ず必要となるスキルだと思います。

あとは今後WEB系企業でプロジェクトを進めていくためには、周りから信頼されるだけの技術力を身に付ける必要があると思います。技術力への好奇心が高い方々と競争していく必要があるため大変だとは思うのですが、SI企業での経験を強みに力をつけていこうと思います。

SIで身につけられなかったこと

コーディング力

コーディング力といっても色々あるとは思うのですが、特に足りていないのは保守性を意識したコーディング(オブジェクト指向を意識したコーディング)、コーディング速度(前述の保守性を意識した上での)などです。
単純にJavaを書くだけであれば、まぁ普通に書けるのですが、オブジェクト指向を意識してかけているとはいえない状況です。
でもそれって書けないと同じことですよね・・・これから死にものぐるいで勉強したいと思います。

先ほどの環境を見てわかるように、随分レガシーな環境で働いていたと思います。
かつ、自分でコーディングしていない、オフショアが書いたコードはオブジェクト指向が意識出来ていない、元請け企業がコーディングの重要性を理解していない、既存のシステムが保守性を意識出来ていないので余計な調査コストがかかる、テストコードを書く文化がないので余計なノンデグテストがありすぎてテストがしんどい。
というような状況でした。

中でもテストについては本当にうんざりしました。オブジェクト指向を理解していないので、1つのクラスの中身の計算を変更して、でも入出力の部分は変わらないのにノンデグテストで関連する画面を全画面打鍵するみたいなことも多数ありました。
無駄なテストというのはモチベーションに大きく影響するということを学べたのは大きかったかなと思います。

オブジェクト指向での単体テストの重要性はかなり高いです。
適切にオブジェクトを作成できていて、単体テストをしっかりとできていれば、システムとしてのバグも減少できるということですね。

技術の会話ができる同僚

これは自分のスキルという話ではないのですが、欲しかったなぁという思いから念のため入れておきます。
SIerで技術の会話ができる同僚はほぼ出来ませんでした。SI企業では技術に対して興味がある人が本当に少ないです。
休日に勉強するような人はほとんど皆無ですし、勉強会にも積極的に参加しようとはしていません。
会社で身につけられることだけで十分となってしまって、遊ぶことばかりになっています。

私は成長できるためには環境が一番重要だと思っています。
周りが優秀な方ばかりで休日も勉強するという方が多いのであれば、自分も自然と勉強するでしょうし、それによって競い合いながらどんどん成長していきます。
なのでそういう仲間がいれば自分ももっと成長できたという意味でこの項目をあげました。
次の現場では成長意欲が高い方が多いといいなと思います。刺激を受けつつ成長していきたいです。

最後に・・・

私がSIで身につけられた部分としては、マネジメント部分がほとんどです。
反対に身につかなかった部分は、技術力です。
エンジニアとして生きていく以上は技術力はマストなものだと思うのですが、SI企業ではそれが身につきにくい環境だと思います。
それは誰でも開発できるように推進してきたからこその結果なのかもしれませんが、個人のスキルとしては弊害になっていますし、それを続けていけば、継続した開発というのは難しくなっていき、SI業界も厳しい状況になるのでは?と思っています。

なのでSI企業に所属しているエンジニアで、個人的に技術力に興味を持って勉強している人はSIにそのままいるというよりは、WEB系に来たいという人が多いと思います。
ただそうなるタイミングが重要で、配属された先が技術が身につく環境であれば(できればWEBシステム)、すぐに転職を考えるかと思うのですが、業務システムを何年か経験してからWEBシステムを担当することになって危機感を持って転職をしても、すでに年齢の面で不利になっていてなかなか転職が難しくなってしまうと思います。
なのでタイミングと運がすごく重要です。
できれば成長意欲が高い人には、その人にあった環境が与えられるといいなと思います。

フッター広告

スポンサードリンク



シェアする

  • このエントリーをはてなブックマークに追加

フォローする