システム開発関係にどっぷり35年以上漬かっている私にとって、『プログラミングスキルがなくてもSEができる』ということがどうしてもしっくりとしません。
プログラマーはコードを書く人で、SEはシステムを設計する人という位置づけだからということのようです。
つまり、家を設計する設計士と家を建てる大工さんとの違いのようなものでしょうか?
たしかにSEの仕事の設計の範囲をどこで区切るか?によるとは思います。
システムを作るうえでの設計作業は、全体の設計から細かい画面一つ一つの設計、データの保持の仕方の設計など様々な設計があり、確かに全体の動きの設計や、画面の動きなどの設計においてはコードスキルは必要ないとは思われますが、書かれた設計からどうやってプログラムで実現するか?の設計もあり、これは結構システムを完成させる上では必要な作業となります。
実は、この作業も本来ならばSEの仕事だと私たちは認識しているのですが、ここについてはどうなのでしょうか?
ここはまさにプログラミングのコードスキルがベースとして必要なもので、コードスキルのない方には到底設計できるものではありません。
コードスキルを必要としないSEとコードスキルを必要とするSEが必ず存在するはずなので、『プログラミングスキルがなくてもSEができる』という一言は非常に現役エンジニアには違和感のある言葉です。
あるシステム会社では新入社員として入社しごく一般的な新人研修を受けた後、すぐにSE部に回され、肩書をSEとして仕事に就くというところもあるそうです。
しかも、プログラミング経験のまったくない、データベースの知識もまったくない新人が、いきなりSEとして名刺交換を行うそうです。
仕事の範囲は、自社パッケージの説明をして、一部カスタマイズのご要望をヒアリングしてそのメモを技術に渡すということのようです。
これはSEというより営業という方がただしいのではないかと思うのですが、営業というより確かに時流からすればSEという肩書の方が格好良く聞こえがいいのかもしれませんね。
『どこに就職したの?』
『●●というITの会社です』
『なにやってるの?』
『SEです』
『えええ?君…文学部出身だよね!プログラミングやIT趣味で何かやってたの?』
『プログラミングは全くわからないです。嫌いです!インターネットは使っていましたし趣味です』
『ええええ プログラミングやっていないでSEできるのその会社?』
『はい お客様のところに行って自社の製品の説明をして打ち合わせをして販売しています!』
『ああああああ そうなんだ….』
システム会社35年の私からすると…..とてもとても違和感のある会話を以前したことがありました。
今日は、chatGPTにSEのことを聞いてみました。が….ちょっとだけ…..でした
『プログラマーとSEの違いをだれでもがわかるようにわかりやすく説明してください。』

プログラマーとSE(システムエンジニア)は、ソフトウェア開発に関連する異なる役割を持つ専門家です。
プログラマーは、コンピュータプログラムを作成する専門家です。プログラムを書くことに特化し、コードを書いてソフトウェアの機能を実装します。プログラマーは、プログラムの設計、コーディング、デバッグ、テストなどのタスクを担当し、プログラミング言語やフレームワークを使用して、ソフトウェアを作成します。
一方、SE(システムエンジニア)は、ソフトウェア開発プロジェクト全体を管理し、ソフトウェアシステムの設計やプランニングを担当する専門家です。SEは、顧客や利用者の要件を分析し、システムの要件定義や設計を行います。また、プロジェクトのスケジュールや予算を管理し、プログラマーやテスターとのコミュニケーションを担当します。SEは、ソフトウェアの全体的な設計やプロジェクトの進行管理を通じて、システム全体の品質と効率を確保します。
つまり、プログラマーはコードを書き、ソフトウェアの具体的な実装を担当し、SEはプロジェクト全体の設計や管理を担当します。プログラマーはソフトウェアの一部を作成する専門家であり、SEはソフトウェア開発プロジェクト全体を管理する専門家と言えます。
違和感のある部分を聞いてみます
『SEはプログラムが作れなくてもなれるのですか?』

はい、SE(システムエンジニア)はプログラムを書かなくてもなることができます。SEの役割は、プログラムの設計や管理を担当することであり、必ずしもプログラミングのスキルが必要とされるわけではありません。ソフトウェア開発プロジェクトにおいて、SEはプロジェクト全体を俯瞰し、プロジェクトの計画、要件定義、設計、進行管理、コミュニケーション、品質管理などを担当します。
ただし、一部のSEはプログラムを書くこともできる場合があります。特に、小規模なプロジェクトやスタートアップ企業などでは、SEがプログラムを書くことも期待されることがあります。また、SEがプログラミングのスキルを持つことで、開発チームとのコミュニケーションがスムーズになり、プロジェクトの全体的な進行管理がより効果的になることがあります。
しかし、一般的には、SEはプログラムを書かずに、ソフトウェア開発プロジェクト全体を管理する役割を果たします。プログラムを書くのは、主にプログラマーの役割であるとされています。
さらにつっこんで….
『設計や進行管理にプログラミングの力がなくても本当になれるのですか?』

一般的には、SE(システムエンジニア)の役割には、プログラムを書く必要はありません。SEの主な役割は、ソフトウェア開発プロジェクト全体を管理し、設計や進行管理を担当することです。しかし、特定のプロジェクトや組織によっては、SEにプログラミングのスキルを求める場合もあります。
例えば、大規模なソフトウェア開発プロジェクトにおいて、プロジェクト全体の設計や進行管理を専門的に担当するSEと、実際にプログラムを書くプログラマーという2つの役割が明確に分かれている場合、SEにはプログラミングのスキルが必要とされないことが一般的です。
しかし、一部のプロジェクトや組織では、SEにもプログラミングのスキルを持たせることがあります。これは、SEが開発チームとのコミュニケーションをスムーズに行い、技術的な問題を理解しやすくするための理由があります。また、SEがプログラムを書くことで、プロジェクトの全体的な進行管理や品質管理がより効果的になる場合もあります。
結論として、一般的にはSEの役割にはプログラムを書く必要はありませんが、プロジェクトや組織によっては、プログラミングのスキルを求める場合もあります。
さらにつっこんで….
『プログラミングスキルがないのにプログラミングの設計ができるのはなぜですか?』

プログラミングスキルがないSEがプログラムの設計を担当する場合、以下のような理由が考えられます。
- ドメイン知識やシステム全体の把握: SEは、ソフトウェア開発プロジェクト全体を俯瞰し、システム全体の設計や要件定義を行います。プログラムの設計においては、システム全体の機能や要件、ユーザーのニーズを理解し、それに基づいて設計を行う必要があります。SEがプログラムの設計を担当する場合、ドメイン知識やシステム全体の把握を活かし、設計を進めることができます。
- モデリング技術の活用: プログラムの設計には、UML(Unified Modeling Language)などのモデリング技術を使用することが一般的です。SEは、モデリング技術を活用して、システムの設計を図ることができます。UMLを使ったクラス図やシーケンス図などの設計を行うことで、プログラムの構造や動作を把握し、開発チームに伝えることができます。
- コミュニケーションスキルの活用: SEは、開発チームやステークホルダーとのコミュニケーションを重要な役割として果たします。プログラムの設計においては、開発チームとのコミュニケーションを通じて、要件や設計の詳細を共有し、合意を形成する必要があります。SEは、優れたコミュニケーションスキルを活用して、プログラムの設計を進めることができます。
これらの理由により、プログラムの設計を担当するSEには、プログラミングスキルが必須ではない場合があります。しかし、一般的には、プログラミングスキルを持ったSEのほうが、開発チームとのコミュニケーションや設計の詳細な共有がスムーズに行われるなど、プロジェクトの進行を効果的にサポートできるとされています。