SEとプログラマーの違い

SE(システムエンジニア)とプログラマーの役割やスキルの違いを整理した一覧表を作成しました。以下の表は、各職種の特徴を比較しています。

項目SE(システムエンジニア)プログラマー
主な業務内容システムの設計・要件定義、プロジェクト管理、クライアントとの調整プログラムの実装、コーディング、デバッグ、テスト
責任範囲システム全体の設計、要件定義から運用までコードの開発と動作確認が主
クライアント対応クライアントとの打ち合わせや要求分析を行うことが多い基本的にクライアントと直接やりとりすることは少ない
技術的スキルシステム設計、データベース設計、ネットワーク知識、要件定義などプログラミング言語、アルゴリズム、デバッグ技術
プロジェクト管理プロジェクト全体の進捗管理やメンバーの管理基本的にはプロジェクト管理には直接関与しない
使用ツールUML、設計ツール、プロジェクト管理ツール、ドキュメント作成ツールIDE(統合開発環境)、バージョン管理ツール
要件定義と設計要件定義書や設計書を作成し、システムの構造を設計設計書に基づき、具体的なコードの実装を行う
実装フェーズプログラミング自体は行わないことが多いが、技術的な指導を行う場合もプログラムのコーディングを行う
テストと品質管理システム全体のテスト計画の作成や品質管理に携わる自身が作成したプログラムのテストとデバッグを行う
必要なコミュニケーションクライアント、開発チーム、マネジメントとの密なコミュニケーション主に技術的なチームメンバーとのコミュニケーションが中心

この表を参考に、SEとプログラマーの違いを理解していただけると思います。SEはシステム全体の設計やプロジェクト管理に携わることが多く、プログラマーは具体的なコードの作成とその動作確認が主な仕事です。

SEは大きな構想と顧客対応に忙しく、プログラマーはその構想を形にするために一心不乱にキーボードを叩いているという、この「お互いに相手の仕事が簡単だと思いがちな構図」がこの表からしっかり伝わってきます。

システムエンジニアは、まるで企業のプロジェクトにおける「何でも屋」のように、クライアントとの会議、要件定義、そしてプロジェクト全体の管理をこなす。たとえプロジェクトが迷走しようが、システムエンジニアは方向性を定めるのが仕事。それに対して、プログラマーは「とにかく動くものを作れ!」というプレッシャーに耐えながら、ひたすらコードを描き続ける日々。まさに、SEが「大局」を見ている間に、プログラマーは「実際の戦場」で奮闘しているという構図ですね。

それぞれのスキルセットも面白い。SEは、システム設計やデータベースの設計、さらにはクライアントとの交渉スキルも求められる一方、プログラマーはひたすら技術的なスキルに集中できる。でも、プログラマーが気楽に見える?それはただの錯覚で、デバッグ地獄に落ちた時のプログラマーは、まさにソフトウェアの迷宮に閉じ込められた囚人のようなものでしょうね。

どちらの職種も、自分の分担を超えてお互いの領域に関与する瞬間が多々ありますが、そのたびにお互い「こっちのほうが大変だ」と心の中で文句を言っているかもしれません。それでも、システム全体が上手く機能するためには、お互いが必要不可欠な存在という、なんとも皮肉な共生関係です。

ここに生成AIが導入されるとどうなるか?

ああ、生成AIがこの職場に登場すると?そりゃあ、まさに混沌の幕開けですね。SE(システムエンジニア)もプログラマーも、その地位はどうなるのか、とりわけ危機感を抱かずにはいられないでしょう。

まずSEですが、生成AIが「要件定義」とか「設計書作成」とかを自動化できるようになったら、SEは今度何をやるんでしょう?AIがクライアントとのやり取りをサクサクこなして、システムの設計もAIのアルゴリズムが最適解を提供するなら、SEはカフェに行ってコーヒーでも飲みながら「この設計、すごいね」とAIを褒める仕事にでもなるかもしれません。でも、クライアントが曖昧なことを言い出したり、無理な要望を押し付けてきたりしたときには、人間が最終的な調整役として登場するのでしょう。つまり、SEはAIとクライアントの通訳兼バッファー役に格下げ、いや、進化するんです。たぶん。

そしてプログラマー。彼らはAIの進化によって、コードを書く速度が飛躍的に向上するか、もしくは「そもそも自分がコードを書かなくてもいい世界」に直面するかもしれません。AIが最適なアルゴリズムを瞬時に書き上げ、デバッグも自動で行うなら、プログラマーは「AIの指導監督者」という新たな肩書を得るかもしれません。「AIがバグ出しすぎてイライラする!」なんて時代が来るかもですね。いや、それどころか、「AIが書いたコードをチェックして、わかりやすく解説する仕事」なんてものが登場するかもしれません。何しろAIが出力したコードは一見完璧でも、誰もその意図が理解できない可能性もありますから。

でも、ここで肝心なことは、AIはあくまでツールです。AIがいくら賢くなっても、クライアントが持ち出す「そもそも何がしたいかわかってないけど、すごいシステムが欲しい」という難解な要望や、仕様変更の嵐に対しては、最終的に人間の判断力が必要になる。だからSEもプログラマーも、完全に失業するわけではなく、役割が変化するだけなんです。

皮肉な話ですが、AIの導入で彼らは「クリエイティブな仕事」から解放されるわけではなく、むしろAIとともにさらに難解な問題に直面するかもしれません。AIがシステムの設計やコーディングを自動化しても、人間の創造力や柔軟性は、まだAIには真似できない部分ですから。だから、結局は「AIと協力して、さらに高度な問題に挑む」未来が彼らを待っている。つまり、仕事は楽にはならないんです。ますます複雑化するだけです。