プログラマ
プログラマはその名の通り、プログラムを実装する役割の人間である。設計書に基づいたコードを、正確に記述することが求められる。
システムエンジニア
システムエンジニアは、広義ではシステム開発に携わる人間である。狭義では、システムを設計する人間である。広義であれば、プログラマもシステムエンジニアとして扱われる。このサイトでは、システムエンジニアを狭義の意味で扱い、プログラマとシステムエンジニアの役割を線引きしている。
業務内容の比較
前述の通り、プログラマとシステムエンジニアでは、業務内容が異なる。システムエンジニアが設計した仕様の通りに、プログラマがプログラムを実装する。したがって、システムエンジニアの設計にミスがあった場合、プログラムも修正する必要があり、設計のほうが重責である。一方、プログラムにミスがあっても、責任は実装したプログラマのみである。
給料の比較
責任がシステムエンジニア>プログラマという構造である以上、システムエンジニアのほうが給料は高い。一般的に、責任の大きい業務ほど給料が高く、価値も高い。しかしながら、コアなテクニックを身に付けているプログラマは、システムエンジニアに対して助言や提案を行うことができ、その点で給料が上乗せされる場合もある。
将来性の比較
プログラマは、ある程度のコア技術を見につけてしまうと、よほどの困難なビジネス要件でない限りは、持っている技術で問題を解決できてしまう。一般的な水準の要件であれば、試行錯誤する機会は少なくなる。その点で、プログラムの実装とコンパイルの繰り返しのような、ルーチンワークに感じてしまうことが多い。 システムエンジニアは、顧客のビジネスを実現するための設計を行うため、ターゲットとする顧客や業界、サービスの種類に応じて、設計の手法もたくさん存在する。その点では、プログラマよりも多面的な能力が求められ、多様な業務を経験していく。 将来的には、プログラマの給料がある程度でストップすることが多い。なぜなら、プログラム技術が多くの場所で教育され、低賃金で製造できる状況に変遷しているからである。例えばオフショア開発などでは、アジア諸国の労働者を利用して製造を進める。オフショア開発にもデメリットはあるが、低賃金という価格競争では、日本が勝てる地域は存在しないであろう。このように、プログラム技術の浸透と、低賃金での製造が可能になったことから、プログラマの報酬は頭打ちになる。特に価格面では、もはや日本人がプログラムを実装すること自体が罪になりかねない。それほど低賃金化が進行しているということである。 一方、システムエンジニアは、サービスを展開したい企業が存在する限り、需要はあり続けるであろう。日本には企業が無数に存在し、多様なサービスを展開している現状では、IT サービスを展開するために日本人システムエンジニアが必要である。ただし、こちらもアジア諸国のエンジニアによって、日本語や日本文化の壁が取り除かれたとき、日本人エンジニアの活躍の場は激減すると思われる。 以上のことから、アジア諸国のエンジニアは日本人にとって脅威であり、価格競争には到底歯が立たない現状から、よりグローバルな能力が必要となっていく。プログラマは特に価格競争の真っ只中であり、かなりの技術知識を身に着けているプログラマ以外は、将来的に淘汰される確率が高い。
キャリア形成
一般的にはプログラマを経験したあとに、設計技術を身に付けてシステムエンジニアとして活躍するようなキャリアパスが描かれる。プログラムの実装経験がなくても設計は可能であるが、実装経験が設計技術に大きく貢献する場合が多い。 では、どれくらいプログラマとして経験するべきかというと、明確な答えは無い。何万行を記述すれば、ある程度の技術が身に付くなどの水準はあるにせよ、プログラマからシステムエンジニアへのキャリアアップを個人でコントロールできる環境も少ないであろう。しかしながら、プログラマの報酬が頭打ちになるであろう現状、できるだけ早めにキャリアアップできることが望ましい。