SE(システムエンジニア)について
システムエンジニア(System Engineer)はその英語の頭文字をとってSE(エスイー)と呼ばれます。
一度は聞いたことがある名前かもしれませんが、聞いたことがない人などはどういうことをする職業なのかイメージしにくいと思います。
今回は初心者向けですので、できるだけどういう職業なのかをわかりやすく書いていければと思います。
まずSEはしばしばプログラマー(コーダーという言い方もある)と混同されますが、厳密には違います。
SEはもう少し広い意味で使われます。
そして人により解釈が異なるようなとても曖昧であると言ってもいいかもしれません。
そうなんです。一言にSEと言っても人によって解釈が曖昧なことが多いのです。
私のSEの結論としては
「システムを用いて、業務における課題や問題をクリアする仕事」
です。
システムを用いてというところがミソです。こういうざっくりした言い方をするとさらにわかりにくいかもしれませんが、これに基づいて付随する作業を行っていくことが仕事になってきます。
ただシステム(IT)を用いての職業であることは間違いないので、パソコンを使っていろいろなことを行います。
もう少し詳しく見ていきます。
SE(システムエンジニア)の意味は広いよ
先ほども書いたようにSEというのは曖昧な表現でその中にもいくつか種類があります。
- 営業SE
- 開発SE
- インフラSE
(もっとあると思いますが)ざっくりと3つに分けました。
本来はこのすべてを網羅できるのが本物のSEなのかもしれませんが、現実的にはこれらの系統に分類されるのだと思います。
ただ大企業は分類分けされることが多いですが、中小企業の場合は営業SEと開発SEが一緒になっている場合が多いです。
営業SE
名前の通り営業を行います。
基本的にはお客さん先へ伺い、システムの提案やお金のやりとりを行います。
お客さんからするとシステムの相談を行う上での窓口に当たるような存在です。
開発(プログラミング)はほとんどすることはありません。
基本的にはお客さんの業務改善について必要な段取りを行うことが多く、お金に関わることを多く取り扱います。
開発SE
開発SEはソフトウェア全般を扱います。
例えばプログラミングだったり、開発するアプリケーションに必要なプラグイン(サードパーティとも言います)を使ったりと開発に関わることはこの開発SEがメインで行います。
またお客さんからの要望を元に設計を行ったり、開発したプログラムのテストも行ったりします。
ステップアップとして、最初はプログラミングやテスト実施を行い、ある程度システムの仕組みがわかれば設計、そして要件定義(要望を聞く)をしていくことが一般的かと思います。
おそらくシステムエンジニアという代表格がこの開発SEになると思います。
インフラSE
インフラSEは馴染みがあまりないですが、システム開発を行う上で必要な設備の設定などを行います。
例えば、サーバー(すごいスペックのいいパソコン)の設定だったり、ネットワーク(インターネット回線)の設定、プリンタの設定などを行います。
開発SEがソフトウェアの担当だとするとハードウェアの担当がインフラSEになります。
基本的にはシステム開発する前にその導入や設定を行い、それ以降はお客さん先に伺うことはありません。(それ以降の伺いはおそらくトラブルです笑)
システム開発の根幹を担うことから、トラブルのあった際は原因調査が難しく、高度な知識や経験が必要になってきます。
SE(システムエンジニア)として成長する3つのポイント
SEの仕事って難しいと思いますが、基本的には他の仕事と同様にお客さんの業務を効率化(最適化)していくのにシステムという媒体を用いることになります。
このことを念頭にSEの成長に必要なことは以下のようなことだと私は思います。
- アルゴリズムの理解を深めていくこと
- 分類分けを使いこなす
- いろいろな情報を吸収しようとするとこ
これを育てていくことが、SEとして成長していく近道になります。
なにゆってんのって感じですよね。笑
詳しくみていきます。
アルゴリズムの理解を深めていく
まずアルゴリズムとは?ってところですね。
アルゴリズム(英: algorithm
出典: フリー百科事典『ウィキペディア(Wikipedia)』
[ˈælgəˌrɪðəm])とは、数学、コンピューティング、言語学、あるいは関連する分野において、問題を解くための手順を定式化した形で表現したものを言う。算法と訳されることもある。
ということだそうですが、いまいちピンときませんよね。
プログラムを組む際には必ず、IF文などの条件分岐のように「あることをしたらこうなる」というようにプログラムしていきます。
例えば
「入力した数字に1を足した結果が10以上だったら”OK”とし、そうでなかったら”NG”とする。」
こういう手順をプログラムにしていくことをアルゴリズム化と呼んでいます。
言語等は無視して適当に書いてみると、
'入力した値(整数)
n(int)
'Xはn(入力した値)と1を足したもの
X = n + 1
'Xが10以上かどうか判定
IF X > 10 THEN
"OK"
ELSE
"NG"
END IF
このようなプログラムを作ります。
お客さんからの要望を具体的にシステム化して、それをプログラミングしていくのですが、この間にはその要望を実現し、かつ設計も行わなくてはなりません。
この具体化していく作業にアルゴリズムが必要になってきます。
どうやってアルゴリズムというものを育てていけばよいか。
最初から簡単に取得できるものではないので、基本的には経験して学んでいくものだと思います。
自身で学んでいきたい場合は、書籍でアルゴリズムについて学ぶより論理的思考の考え方を学ぶ方が身になりやすいと思います。
アルゴリズムの本は初心者が読むとほとんどの場合、挫折するきっかけになります。
論理的思考についてはいろいろな書籍があり、初心者でも入りやすいです。
分類分けを使いこなす
システム化する上で分類分けはよく使うやり方の一つで、SEは無意識の人もいますがほとんどの人がこの手法を使っています。(私は勝手にグループ分けと呼んでいます)
いろいろな情報の材料をいろんな目線からグループ分けするやり方です。
2つ例で説明します。
例1)お客さんからシステムによる業務効率化の要望を受けたので取りまとめる
多すぎる情報(ここではお客さんの現状の運用や要望、システム化対象の業務など)から内容をまとめる場合にはきっかけとして機能でのグループ分けや目線(アプローチ)を変えたグループ分けなどを行うことで取りまとめがしやすくなります。
例2)プログラムのコーディング(プログラミング)を行う
プログラムは開発の標準化(書き方を揃える規約)があったとしても、プログラマーによって中身が必ず異なってきます。似たような処理は統合したり、機能ごとに関数をコメントやRegionでまとめてみたり、他の人がプログラムを見た際にわかりやすくしておくことで不具合のリスクを抑えていきます。
業務の効率化には中身の簡素化が必須であり、運用もしやすいように工夫する必要があります。
グループ化は読み手に対して理解を早める為の手段として意識して使いこなすことがとても大事だと思います。
いろいろな情報を吸収する
インターネットの普及で情報に触れる機会が多くなり、どちらかと言えば取捨選択するような時代になってきました。
その中でも必要な情報を吸収する為にアンテナは常に張っておくべきです。
SEという職業は今もっとも成長期であるITの技術を用いています。
このIT技術というのはこの10年だけみてもものすごい成長で進んでいます。
逆に言うと、10年後まだSEが残っているかはわかりません。
さらにエンジニアという職業は需要がとてもある職業ですが、これから先今持っている技術で戦えるかどうかはわかりません。
その為にもできるだけ最先端の技術にも触れる機会を持とうとし、常に学び続けることができる人間でないと今後生きていくのが難しい可能性もあります。
大げさかもしれませんが、たくさんの情報に触れしっかり取捨選択をすべきです。
開発SE(システムエンジニア)の具体的な仕事
私は開発SEの為、そのあたりについて書いていきます。
主な業務内容
営業ではありませんので、お客さんの要望をシステム化していく実際の作業になります。
このやり方はウォーターフォールというやり方でよく使われる開発手法です。
システム開発には順序があり、そのフェーズを一つ一つ進んでいく形でシステム化を実現していきます。
- 要件定義
- 外部設計
- 内部設計
- プログラム開発
- 単体テスト
- 結合テスト
- 運用テスト
1−3までが設計作業です。要望は何でどのような画面にするのか、どのようなデータベースが必要なのかなどを設計していきます。
4が開発作業です。設計した内容を実際にプログラムで形にしていきます。
5−7がテスト作業で作ったプログラムに対して目線を変えてテストを行っていきます。
ステップアップ
私は未経験でSEをしていますが、最初はもちろん何もわからないところからスタートしています。
開発SEの場合は、おそらくほとんどがステップアップとして最初はプログラムをやっていきアルゴリズム等の理解をしていきます。
プログラムがある程度できるようになってきたら、プログラムをする為の設計を行っています。
設計ができるようになると、お客さんとの要件定義などを行うようになります。
なのでSEとして活躍するまでにはステップアップとしては以下のような流れで進むことが多いと思います。
プログラマ▶︎プロジェクトリーダー▶︎プロジェクトマネージャー
どういう人が適正なのか?
正直なところ「やる気がある人」が一番でこれがないと学ぶことがたくさんあるシステム業界では続けることができません。
もう少し付け加えると、「目的や目標を持っている人」は段違いに伸びていきます。
要は目標があれば目標に対するモチベーション(やる気)を維持できるということです。
入社した際に仮にプログラム経験者と未経験者がいたとしても、この意識を持っている人はすぐ経験者を追い抜きます。
日本の会社は新入社員に対して、未経験でも研修を受けさせてくれて給与も得ることができます。
このことをしっかり生かして、自分のライフスタイルの目標に近づけるように会社を言い方は悪いですがしっかり「利用」してください!
会社に入社するのはあくまでスタート地点です。就社を目標としていたら挫折してしまいます。
あくまで就職(技術力やノウハウを得ること)を第一に考えましょう!
3Kって本当?
3Kという言葉をご存じでしょうか?
システム業界ではしばしばこの3Kという言葉を目にします。
意味は「きつい、厳しい、帰れない」や「きつい、給料が安い、帰れない」などマイナスのイメージの言葉です。
実際このことについて考えてみました。
この問題のほとんどが「会社の体質」によるものであると思います。
これは残念なことですが、就職活動や口コミ、先輩などの情報で見抜くしかありません。
会社との相性はとても大事なので、、、
入社してから考えるのもありだと思います。
ただもちろん仕事ですから、仕事上の責任を求められるのは当然であるし、厳しい場面もあるかと思います。(これは覚悟しておく必要があります)
しかし、いい会社というのはフォローがしっかりしていたり、社員のモチベーションを維持できる工夫をしていることが多いのです。
会社を選ぶ際には、自分がどういうことを優先順位として考えているか、学びたい職業にしたいことが実際できるのかのような視点で選ぶことが大事になってくるのだと思います。
まとめ
SEについてなんとなくでも理解ができたでしょうか?
最初はなんとなくの理解でよいですし、こんな感じなんだと思っていればOKだと思います。
ただどの職業でも同じですが技術を身につけるというのは大変なときもあります。しっかり自分のモチベーションを維持することができるようにしておくことは業種に寄らず、大事なことだと思います。
要点をまとめていきます。
- SEの意味は人によって感覚が違う
- 成長するポイントは「アルゴリズムの理解」「分類分けを使いこなす」「いろんな情報を吸収する」である
- SEの仕事は「設計~テスト」が主でソフトウェア関連を担う
- 人生の目標を持とう!モチベーションの維持につながる!
- 自分が成長できる会社をしっかり選ぼう!相性は大事!
以上です。
ぜひ参考にしてみてください!
コメント