システムエンジニア(SE)として働いていると、プログラミングしないというのは本当なのでしょうか?
まず、システムエンジニア(SE)の定義ですが、、、
最初に本題からズレますが、今回のタイトルの「システムエンジニア(SE)」の定義からです。
システムエンジニア(SE)とよく呼ばれていますがお客様から見ると、以下のエンジニアみんなSEと呼ばれています。
会社や業界によっても呼び名は異なりますが、かなりあいまいな職業名といえるでしょう。IT業界の何でも屋みたいなものです。
ITエンジニア
プログラマー
ネットワークエンジニア
サーバーエンジニア
Webエンジニア
アプリケーションエンジニア
AIエンジニア
組み込み系エンジニア
データベースエンジニア
セキュリティエンジニア(ある意味略称はSEですが)
社内SE
フィールドエンジニア
セールスエンジニア(こちらもある意味略称はSEですが)
インフラエンジニア
もう挙げたらキリが無いのでこの辺りにしておきましょう。。。
今回の対象のシステムエンジニア(SE)はシステム開発現場におけるシステムエンジニア(SE)に限定してお話しします。
結論:プログラミングしないSEはいるが、プログラミングできないSEはいない
結論から言うと、プログラミングしないシステムエンジニア(SE)は存在しますが、プログラミングできないシステムエンジニア(SE)は存在しません。
つまり、プログラミングのスキルは必要ですが、実際にコードを書くことは少ないということです。
では、なぜそうなのか、どんな仕事をするのか、どんなスキルが必要なのか、詳しく見ていきましょう。
システムエンジニア(SE)とは何か
まず、システムエンジニア(SE)とは何かを説明します。
システムエンジニア(SE)とは、お客様の要望や課題を分析し、それに合ったシステムやソフトウェアを提案・設計・開発・導入・運用・保守する人のことです。
システムエンジニアには大きく分けて2種類あります。
一つはコンサルタントタイプのSEで、お客様と直接やり取りし、要件定義や設計などを行う人です。
もう一つは技術者タイプのSEで、コンサルタントタイプのSEが作った設計書に基づいて、プログラミングやテストなどを行う人です。
この2種類のSEの中で、プログラミングしないのはコンサルタントタイプのSEです。
しかし、これはあくまで一般的な傾向であり、実際にはプロジェクトや会社によって異なります。
例えば、小規模なプロジェクトや自社開発の場合は、コンサルタントタイプのSEもプログラミングすることがあります。
逆に、大規模なプロジェクトや受託開発の場合は、技術者タイプのSEもプログラミングしないことがあります。
なぜプログラミングのスキルが必要か?
では、コンサルタントタイプのSEがプログラミングしない場合でも、なぜプログラミングのスキルが必要なのでしょうか?
それは以下の理由からです。
- お客様の要望や課題を正しく理解するためには、システムやソフトウェアの仕組みや機能を知っておく必要があります。
そのためには、基本的なプログラミングの知識や経験があると役立ちます。
例えば、お客様が「この画面でこのボタンを押すとこの処理がしたい」と言ったときに、「その処理にはどんなデータやロジックが必要か」「その処理にかかる時間や費用はどれくらいか」「その処理に影響する他の機能やシステムは何か」などを考えることができます。 - システムやソフトウェアを提案するためには、お客様にわかりやすく説明する必要があります。
そのためには、図や表などを使って具体的に示すことが重要です。
その際にも、プログラミングの知識や経験があると効果的に伝えることができます。
例えば、お客様に「このシステムはこのように動きます」と言ったときに、「どんな画面や機能があるか」「どんなデータやロジックが使われるか」「どんなテストや保守が必要か」などを図や表で示すことができます。 - 設計書を作成するためには、技術者タイプのSEと連携する必要があります。
そのためには、技術者タイプのSEが使う言語やツールについて理解しておく必要があります。
その際にも、プログラミングの知識や経験があるとスムーズにコミュニケーションができます。
例えば、技術者タイプのSEに「この設計書をもとにプログラミングしてください」と言ったときに、「どんな言語やツールを使うか」「どんな仕様や制約があるか」「どんなテストや保守をするか」などを共有することができます。
以上のように、プログラミングしないSEでも、プログラミングのスキルは必要です。
しかし、それはあくまで基本的なレベルであり、高度なプログラミングのスキルは必要ありません。
コンサルタントタイプのSEのスキル
プログラミングのスキル以外で、コンサルタントタイプのSEが身につけるべきスキルは、以下のようなものです。
- ビジネスや業界の知識:お客様のビジネスや業界に関する知識を持っておくことで、より的確な分析や提案ができます。
- コミュニケーション能力:お客様や技術者タイプのSEと円滑にやり取りすることで、信頼関係を築き、品質の高い成果物を作ります。
- プレゼンテーション能力:お客様にわかりやすく説明することで、納得感や満足度を高めます。
- プロジェクト管理能力:スケジュールやコスト、品質などを管理することで、プロジェクトを成功させます。
以上が、私が考えるプログラミングしないSEについてです。
皆さんはどう思いますか?
最後まで読んでくださりありがとうございました。
コメント