一般的には、システム開発において、もっぱら要件(要求)定義や基本設計などといった上流工程にたずさわり、顧客折衝などを含め担当するのがSE(システムエンジニア)、プログラミングを中心とした実際のシステム構築、実装を担当するのがプログラマ、と考えられることが多いようです。ただ、両者に明確な定義というものはなく、その境界線というのはあいまいな部分もあります。相応の技術的知識とコミュニケーション能力を兼ね備えているに越したことはありませんし、それが実際の仕事の幅を広げ、結果としての高収入へつながりやすいことは事実でしょう。