こんにちは。プロラボです。
この記事を書いている僕は、現役でシステムエンジニアをやっています。
現在31歳。毎日定時で帰って年収600万くらいです。びっくりするほど高収入なわけではないですが、それなりにストレスのない生活をしています。
システムエンジニアって良いですよ。
今回は、
[jin-iconbox15]- システムエンジニアに興味があるけどどんな仕事かさっぱり
- 具体的なシステムエンジニアの仕事内容が知りたい
- できれば現役のシステムエンジニアの話を聞きたい
こんな疑問を解決します!
今回はいきなり結論を出すことができないので、以下の目次の通り順を追って解説していきます。
それでは早速いっていみましょう!
目次
システムエンジニアはシステムを開発するお仕事
システムエンジニアとはシステム開発をするお仕事です。
ちょっとかっこいい言葉を使いましたが、要するにシステムを作る仕事です。
とはいえどんなものを作っているのかイメージがつかない人もいると思いますので具体例を挙げると、
- カーナビ
- LINEアプリ
- 駅の券売機
- Suica(PASMO)
- 動画配信サービス
などなど。どんな人でも1つくらいは使ったことがあると思います。
なんなら毎日利用しているようなものばかりですよね。
さらに最近ではIoT(モノのインターネット)と呼ばれる、生活家電をIT化するような動きが流行ってたりします。
[jin-iconbox10]自動で掃除してくれるロボット「ルンバ」は家から離れていてもアプリで操作や情報などができますが、まさしくIoTって感じですね。[/jin-iconbox10]こんな感じでシステムエンジニアが作ったものって人々の生活の中にかなり浸透しているんですよね。
「誰かが喜ぶものを作る」というのが一番の醍醐味だと思います。
「あのシステム、僕が携わってたんだよ」なんて言えたらちょっとした自慢になりますしね。
システム開発は7つの工程に分けられる
もう少し具体的にシステムエンジニアの仕事内容を見ていきましょう。
システム開発は大きく分けて7つの工程に分けられます。
- 要件定義
- 基本設計
- 詳細設計
- コーディング
- テスト
- リリース
- 保守・運用
上記の通りです。
この中で①〜③を上流工程、④〜⑦を下流工程とまとめて呼ぶ場合もあります。
それぞれの工程について、まだ細かく知る必要はないと思いますが、ざっくり説明すると以下の通りです。
ノウハウを詰め込みすぎるとパンクするので流れだけでも抑えておいてください。
要件定義
システム開発で一番最初の工程。
お客様の要望をヒアリングし、どんなシステムを作るべきかをまとめる。
基本設計
要件定義から具体的な機能や完成予想の画面を設計する。
詳細設計
基本設計で決めた機能を具体的にどうやって実現するか、細かく設計する。
より専門的な内容になる。
コーディング
詳細設計で設計した通りに、プログラミング言語を使ってコーディングする。
テスト
コーディングして完成したシステムが、詳細設計・基本設計・要件定義の通りに完成しているかテストをする。
リリース
お客様にシステムを引き渡す。
保守・運用
バグ対応やシステム監視など、アフターサービス的な仕事。
注文住宅に例えるとわかりやすい
ほとんどの人は「システム開発」を頼んだ経験がないし、これから頼む予定も無いので、イメージしづらいかなと思います。
そこでシステム開発を注文住宅に例えるとわかりやすかったりします。
具体的な内容は以下の記事に記載していますので、興味がある方はご覧ください。
システムエンジニアとプログラマの違い
IT業界的に考えると、システムエンジニアとプログラマは違います。
ただどちらも「システム開発」するお仕事であることには変わりないので、個人的にはガッツリ分けて考えない方が良いと思っています。
[jin-iconbox10]「分けて考えない方が良い」理由は後ほど解説します。[/jin-iconbox10]システムエンジニアとプログラマの違いを理解するには7つの工程を見るとわかりやすいです。
先ほど解説したシステム開発の流れを図にすると以下みたいな感じになります。
上記図の通りで基本的には、
- 上流工程:システムエンジニアの担当
- 下流工程:プログラマの担当
こんな感じになります。
上記の関係をわかりやすくすると、
[jin-iconbox03]システムエンジニアが設計図を書いて、プログラマが作る[/jin-iconbox03]といった感じですね。
「システムエンジニア = コーディング」というイメージを持っていた人にとっては軽く衝撃かなと思いますが、システムエンジニアとしてのレベルが上がれば上がるほど、コーディングから遠ざかっていく傾向にあります。
システムエンジニアとプログラマは分けて考えない方が良い
さんざん「システムエンジニアとプログラマは違う」と説明してきましたが、ぶっちゃけ分けて考えない方が良いです。
[jin-iconbox03]というかシステムエンジニアはプログラマの仕事もできるべきです。[/jin-iconbox03]システムエンジニアは7つの工程の中で、
- お客様の要望をヒアリング
- プログラマへの作業指示
をします。
結局最終的にプログラミング言語によってシステムを作成するのはプログラマなので、プログラマへの的確な作業指示が出せないと、思ったようなシステムにならないかもしれません。
さらにお客様の要望をヒアリングしてもプログラマの仕事がわかっていないと、実現可能か否かの判断も出来ないんです。
[jin-iconbox05]また驚くべきことにプログラマの仕事(コーディング)ができないシステムエンジニアは結構います。[/jin-iconbox05]そういったシステムエンジニアと仕事をすると、細かいレベルでの会話が噛み合わなかったりするのでどうしても仕事の進みが遅かったりします。
また将来的にフリーランスで働きたいならシステムエンジニアの仕事もプログラマの仕事もできることがマストとなるでしょう。
現実はシステムエンジニアも下流工程を担当する
僕の実体験ですが、現実はシステムエンジニアも下流工程を担当します。
というもは、プログラマと肩を並べてコーディングをする時もありますし、プログラマが書いたコードのレビューをする時もあります。
[jin-iconbox03]レビューとは設計通りにコードが書けているか、チェックする工程です。[/jin-iconbox03]またテストでは、テスターの人がスムーズにテストをできるように「テスト仕様書」をシステムエンジニア作ります。
例えば駅の券売機に例えると、
- 100円投入したら液晶に100円と表示されること
- 発券ボタンを押したら券が発券されること
かなりざっくりですが、上記のようなイメージです。
このように上流工程が完了したらプログラマに丸投げ!というわけにはいきません。
必ず何かしら関わることになるので、システムエンジニアもプログラマの仕事ができれば損は絶対にないんです。
システムエンジニアになるには?
ちょっと悲報ですが、未経験からいきなりシステムエンジニアはかなり難しいと思います。
めちゃくちゃ良い大学を出て、業界最大手の一次請けソフトウェア会社(例えばNTTDATAなど)に入社できればスタートからシステムエンジニアになれると思います。
ただその場合、「プログラミングができないシステムエンジニア」になっちゃいますが。
[jin-iconbox09]大手に入社する以外の最高速度でシステムエンジニアになるための方法は、プログラマとして就職することです。[/jin-iconbox09]と言うのも大体のシステムエンジニアは、プログラマを経験したのちキャリアアップという形でシステムエンジニアになっています。
システムエンジニアは自分のITに関する幅広い知識の引き出しから、お客様の要望に合うシステムを設計します。
上記のような引き出しはほとんど経験則に基づくものなんですよね。
新人時代にプログラマとして様々な技術に触れて、知識を蓄積していきます。そこで培った知識を生かして次は設計の場にステップアップしていく感じです。
プログラマとして生きていく人もいます
ただしずっとプログラマのままでいる人も少なくないです。システムエンジニアになると確実にプログラミングする機会は減ってしまうので、とにかくプログラミングが好きな人はプログラマとして技術力を突き詰めるのも大いにありです。
技術力の高いプログラマは半ばスーパーマンとして扱われ、需要も高いです。言わば職人のような感じですね。
転職に遅いは無いです
もしこの記事を読んで、
「とは言えもう転職するような歳じゃないよな・・・。」
「今更新しいことを始めても・・・。」
と思っている人がいましたら、
[jin-iconbox09]そんな事はないよと伝えたいです。[/jin-iconbox09]30代を超えるとプログラマへの転職が難しくなる事は事実ですが、30代後半まで転職保証してくれるプログラミングスクールもありますし、何より30代を過ぎた人が転職してきた例を知っています。
僕が今働いている会社に、34歳未経験で飛び込んできた方がいらっしゃいます。
少しの間ですが、僕はその方のメンターとしてサポートしていた時期があり、当然最初は粗末なスキルでしたが、やる気だけはみなぎっており、メキメキと成長していきました。
今では独り立ちして1人で1つのシステムを担当しています。ビックリなのはまだ入社から1年も過ぎてないんですよね。
人間やればできるものです。
[jin-iconbox05]また70代でプログラミングを始めてAppStoreにアプリを公開した猛者もいます。[/jin-iconbox05]上記のような成功って探せば探すほどゴロゴロと転がっているんですよね。
要するにやる気次第でなんとでもなるんです。
成功する人と失敗する人の違いは、
- 「やるか」「やらないか」
- 「継続するか」「挫折するか」
だと思います。
何を隠そう僕も1度転職を経験していますが、今でも転職してよかったと心から思います。
[jin-iconbox03]その時感じたのは「転職したい時こそ転職時」という事です。[/jin-iconbox03]モヤモヤしてても時間がもったいないですからね。
僕はSE経験者だったので、すぐに転職エージェントに飛び込みました。あとは流れに身を任せて転職活動を進めていった感じです。
無料ですからね。活動がしんどくなったらやめれば良いだけです。
もしプログラミング未経験で自信がなければ、プログラミングスクールへ通うことを強くお勧めします。
まずは無料相談から出来ますし、今はコロナ禍の影響でほとんどのプログラミングスクールがオンラインで実施できるようになっています。
要するに家にいるだけでプロからプログラミングが学べるんです。
独学でプログラミングが頑張れるという人は転職エージェントでOKでしょう。
転職活動をするなら転職エージェントを使うのが絶対お勧めです。その理由は以下の記事で解説していますのでぜひ読んでみてください。僕の実体験も交えて解説しています。
まとめ
と言うわけで「システムエンジニアの仕事内容」について解説しました。
まとめると、
[jin-iconbox07]- システムエンジニアはシステムを開発するお仕事で、
- 7つの工程に分けられる
- システムエンジニアになるにはプログラマからスタートすべきで、
- プログラミングスクールか転職エージェントを使うのがお勧め
でした。
ここまで読んでいただきありがとうございました!
今回は以上です。