システムエンジニアに必要なスキル

システムエンジニアになりたい

【システムエンジニアに必要なスキル】プログラミングは絶対に必要な理由

2020年4月17日

 

IT知識ゼロの大学生ですが、システムエンジニア(以下SE)を目指しています。

プログラミングスキルは絶対に必要なのだろか?

他にもSEに必要なスキルとは何だろ?

経験者に聞いてみたいです。

 

結論を言うと、SEに必要なスキルは3つ。

 

SEを目指すあなたにとって、プログラミングスキルは絶対に欠かせません

プログラミングスキルがないと、クライアントやプログラマーに迷惑をかけてしまい、業務をスムーズに進めることも難しくなります。

 

この記事では、SEにプログラミングスキルは絶対必要である理由を解説しつつ、その他にSEとして必要となるスキルも解説していきます。

 

マー坊
IT企業&WEB企業などでSE、(プログラマー)PGを17年経験した僕が実体験を交えてお話していきます。

 

SEはプログラミングスキルが必要である理由

SEはプログラミングスキルが必要である理由

SEの仕事は、クライアントにヒアリングしながら主に設計書を作ることです。

参考システムエンジニアの仕事内容を実体験から詳しく解説!【就活時にも役立つ話】

 

とはいえ、SEにはプログラミングスキルは欠かせません。

 

その理由は以下の通りです。

  1. クライアントからの質問に即答できる
  2. (下請け)プログラマーのコーディングレビュー
  3. 理論的なスケジュールの組み立てができる

 

順番に解説します。

 

1.クライアントからの質問に即答できる

1.クライアントからの質問に即答できる

SEがプログラミングのスキルがあると、クライアントにヒアリングする中での要望に対し、実際にシステム化の「実現可否」の判断がすぐにできます。

もし実現が難しそうなのであれば「時間が掛かりそう」という判断もできます。

 

なぜなら、SEの頭の中で、

「どういう風にコーディングすれば良いか」

「どんなAPIを使えば良いか」

「使用するデータは?ファイルは?」...

実際のコーディングをイメージしながら、システム化の構成を考えることができるのです。

 

しかし、SEがプログラミングスキルがない場合には、上記のようなコーディングをイメージした構成は考えることはできません

 

ですから、クライアントからの要望に対し即答できない状況になるのです。

 

そうなることで、担当のプログラマーに確認しに行ったりしますから、時間的にもロスとなってしまいます。

何よりも、回答を待つクライアントのストレスも溜まっていき、エンジニアとしての信頼性も疑われることもあります。

 

マー坊

実際に、クライアントがSEを飛び越えプログラマーのところへ来て、機能の実現可否を聞いている場面を見たことがあります。

さらに、プログラマーの結果を見て、外部設計書を作り直す始末...

こういう開発もあるとは思いますが、SEの立場を疑いましたよ。

 

2.(下請け)プログラマーのコーディングレビュー

2.(下請け)プログラマーのコーディングレビュー

プログラミング工程を下請けに発注した場合の、コーディングレビューもできるので、より高品質なシステムとなります。

 

例えば、

「誰が読んでも見やすいソースコードなのか...」

「保守性はあるのか...」

「コーディング規約は守られているか...」

 

設計書通りのコーディングができているかのチェックも当然のこと、上記のような観点でチェックすることができます。

命名規約、メソッド名、変数名などが決められた通りにできていないと、非常に読みづらいです。

 

また、意味のないロジック(デスロジック)や同一のロジックなどがあると、メンテナンスにも面倒なばかりでなくバグの原因となります。

 

ですから、ただ設計書通りにコーディングができて、システムが機能すれば良いということではありません

その後のカスタマイズや仕様変更などにも耐えうるシステムとならなければ、後々大きな問題にもなりかねません。

 

マー坊

過去に外注に作ってもらったシステムは、メンテナンス性に問題がありました。

同じロジックが色んなモジュールに組み込まれていて、カスタマイズが大変になるばかりでなく、バグをも生み出していました。

 

3.適切なスケジュールの組み立てができる

3.適切なスケジュールの組み立てができる

SEはプログラミング工程における、プログラマーのスケジュールも管理します。

 

SEの立場としては、チームリーダーとなる場合も多いので、各プログラマーの管理もしないといけないのです。

 

コーディングにxxx日、単体テストにxx日と...

 

しかし、SEがプログラミングスキルがないと、各機能を作り上げるための時間(日数)が正確に判断できません

前述した「1.クライアントからの質問に即答できる」と同じで、SEの頭の中でロジック構成ができないからです。

 

ですから、本当にコーディングに必要な日数がプログラマーに割り当てられず、プログラマーのスケジュールがタイトになることにもなるのです。

そうなってしまうと、最終的に納期が遅れたり、低品質のシステムとなってしまう恐れがあるのです。

 

マー坊

僕自身もプログラミング経験が浅かった時、スケジュールの組み立てが甘かったこともありました。

一部のプログラマーからひんしゅくを買った経験があります。

また、炎上する開発となってしまう要因の一つとして、このスケジュールの組み方のまずさが挙げられます。

 

SEに必要なその他のスキル

SEに必要なスキル

SEにはプログラミングスキルの他にも、システム設計者やチームリーダーとして必要なスキルがあります。

  1. コミュニケーションスキル
  2. マネジメントスキル

 

1.コミュニケーションスキル

1.コミュニケーションスキル

SEにはコミュニケーションスキルも必要です。

 

コミュニケーションスキルを持っていることで、クライアントとのヒアリングで必要な機能漏れも防げるし、プログラマーに対する指示なども明確にもなるのです。

 

クライアントは全てを言わない

クライアントは全てを言わない

クライアントにヒアリングするなかで、クライアントにとっては業務上当然のことだからあえて言わないこともあるのです。

(決してクライアントのSEに対する意地悪ではありません)

 

しかし、SEにとってはクライアントの当然だとすることが分かりません。

もしそのまま設計をしてしまうと、クライアントレビューの中で漏れが発覚し、余計な手直しが必要になります。

 

ですから、SEはクライアントの要望に対して、システム化を構想しながらその影響を考えます。

もし何か影響があるようであれば、その都度クライアントに確認しなければなりません

 

マー坊

僕が経験したデータ移行のシステム開発では、全てのデータが正常に移行できないことがデータ調査時に発覚しました。

システムでうまく移行できるデータと、できないデータがあることをクライアントに伝えることで、設計作業にかかる工数の見直しなどしてくれましたよ。

 

クライアントとのヒアリングの中で、クライアントの要望をただ聞いて設計に盛り込むことは厳に謹みたいところです。

 

プログラマーに対する指示が明確になる

プログラマーに対する指示が明確になる

プログラマーへの指示を設計書だけではなく、SEから口頭の説明もあるとプログラマーは的確にプログラミングができます

 

設計書の中には不明瞭な記述や、どう捉えたらよいかわからないプログラマー泣かせの記述があるからなのです。

 

例えば、

  • ダラダラと何枚もの設計書があるにもかかわらず、全体概要なく分かり辛い
  • 図表がないから直感的に理解しにくい
  • 関数呼び出しについて「xxx仕様書参照」としか書かれていないもの(引数の設定が不明)

 

詳細設計書を細かく書きすぎたり、逆に簡略化しすぎて理解し辛いものや、悩んでしまうものが多いです。

 

ですから、SEの方からプログラマーに仕様書を渡すと同時に、口頭での補足説明が必要です。

そうすることで、プログラマーの設計書で悩む時間も減りますし、勘違いもなくなるため無駄なバグも防げます

 

マー坊

設計書があるからプログラミングはできる。

とはいえ、やはりSEからプログラマーへの口頭での説明は、製品の品質を確保するためにも必要です。

 

2.マネジメントスキル

2.マネジメントスキル

SEであれば、プロジェクトチームのリーダーに立ってプログラマーを引っ張っていきます。

全体のプロジェクトが遅延なく、かつ若手プログラマーの育成環境をも整えていきます。

 

ですから、プログラマーなどエンジニアを管理するスキルが必要です。

 

プログラマーにもスキルある者とない者がいますから、プログラミングの作業進捗は様々。

例えば、あるプログラマーが作業が遅れていたりすると、フォローやカバーリングに入れるプログラマーをアサイン(割り当てる)したりすることも必要です。

 

また、経験の浅いプログラマーを教育する必要があるので、ベテランプログラマーの近くで仕事させるなり工夫も必要です。

 

マー坊

とにかくSEは自分の仕事のことだけではなく、周りのエンジニアの仕事の状況に対し常にアンテナを張っておくことが大切です。

 

まとめ:プログラミングができると、将来は独立も目指せる!

SEに必要なスキルは全部で3つ。

  • プログラミングスキル
  • コミュニケーションスキル
  • マネジメントスキル

 

上記のうち、プログラミングは絶対に必要です。

プログラミングスキルがあることで、システム開発の円滑な遂行と品質の高いモノづくりができます

  1. クライアントからの質問に即答できる
  2. (下請け)プログラマーのコーディングレビュー
  3. 理論的なスケジュールの組み立てができる

 

その他にもSEとして、コミュニケーションやマネジメントスキルも必要です。

クライアントのシステム化に対する要望を細かく引き出したり、システム開発のリーダーとしてプログラマーなどのメンバーを管理していかなければなりません。

そのためにも、プログラミングスキルは欠かせないものとなります。

 

将来、独立をお考えの方であれば、SEであってもプログラミングスキルは絶対に持っておきたいスキルです。

 

 

この記事はいかがでしたでしょうか✨?

-システムエンジニアになりたい

© 2020 WEB系エンジニア-マー坊ブログ