システムエンジニアは、プログラミングを一日中デスクで行っているイメージを持つ人もいるかもしれませんが、多くの企業では上流工程と呼ばれるクライアントへのヒアリングなどの業務を担っています。
システム開発は、最初にクライアントがどういったものを望んでいるのかを詳細に聞き取り、何を実現すればよいかを分析します。
これを要求分析と言い、この内容をまとめることが要件定義と言います。
この要件定義に従い、システムを何で構成をするか決める基本設計を行います。
次に基本設計に基づいて、詳細設計と呼ばれる実際にプログラミングをするための細かな仕様策定やクラス設計、ドキュメント整備などを進めていきます。
この要求分析・要件定義・基本設計・詳細設計の4つを通した一連の流れが上流工程と呼ばれ、システムエンジニアが担う業務の中核を担っています。
プログラミングは上流工程の最後、詳細設計の次に行われるので、通常プログラマーが担当しシステムエンジニアは携わりません。
ではシステムエンジニアは全くプログラミング言語を知らなくて問題ないかというと、当然そうではありません。
先に上げた4つの工程は開発に必要な言語の知識がないと、システムをどうやって何で組めば良いか、クライアントに提案すらできないのです。
具体的に必要な言語はシステムによりますが、業務システムならばC・C++・Javaなどが定番です。
ウェブブラウザやウェブアプリでしたら、PHP・JavaScript・Ruby・ Perlなどの言語知識もよく求められます。
またシステム開発では、Objective-Cなど特定のプラットフォームで強い言語の知識が必要になることもあるようです。