IT業界の職種は、ともすれば「ITエンジニア」という言葉でひとくくりにされてしまいがちです。
しかし、一口に「ITエンジニア」といっても、その実情はいろいろです。
中でも、特に混同されがちなのが、プログラマーとシステムエンジニアでしょう。
実は、この二つの職種には明確な違いがあるのですが、両者の違いを明確に説明できる人は、意外と少ないです。
そこで、この記事では、プログラマーとシステムエンジニアの違いを解説した上で、それぞれの職種に向くタイプ・向かないタイプを考察します。
実は違う!プログラマーとシステムエンジニア
はじめに、プログラマーとシステムエンジニアの違いを明らかにしておきましょう。
プログラマーとは、「プログラムの作成を担当する人」です。
「プログラムを作る人だからプログラマー」ということで、非常に分かりやすい職種だといえます。
一方、システムエンジニアの方は少しイメージしにくいかもしれません。
実際、システムエンジニアとして働いている人たちに「今、どんな仕事をしていますか?」と尋ねたら、どうなると思いますか?
「要件定義をしている」「設計書を作成している」「今はプログラムコードを書いている」といったように、いろいろな答えが返ってくるに違いありません。
ただ、端的にいうと、システムエンジニアとは、「システム開発に関わるいろいろな仕事を手掛ける」職種です。
以下で、それぞれの具体的な仕事内容に触れながら、職業に対するイメージを掴んでいきましょう。
プログラマーはこんな仕事
プログラマー(Programmer)は、文字通りプログラムの作成に携わる職種です。
具体的には、JavaやC、Python、Ruby、JavaScriptといったプログラミング言語[*1] を用い、設計書に基づいて実際にプログラムを作成します。
[*1] Python、Ruby、JavaScriptは「スクリプト言語」「スクリプティング言語」と呼ばれることがありますが、広義的な定義によると、プログラミング言語の一種です。
ただし、プログラマーは絶対にプログラミングしかしないのかというと、実はそうでもありません。
例えば、設計者が作成した仕様書に基づいて「詳細設計書」と呼ばれる具体的な設計書を作ることもあります。
また、作成したプログラムに関するテストを手掛けることもあります。
ただ、少なくとも、プログラミング[*2] が主要な役割であるというのは間違いないところでしょう。
[*2] プログラムコードを書く作業という観点から、「コーディング」と呼ばれることもあります。
システムエンジニアはこんな仕事
それでは、システムエンジニアの仕事内容についてです。
プログラマーの職域が比較的明確に線引きできるのに対して、システムエンジニアの仕事の範囲ははっきりしていません。
システムの要件定義を手掛ける場合もありますし、設計書の作成に携わることもあります。
クライアントとの仕様調整を行うこともありますし、時にはチームのリーダーとしてメンバーの管理を担当することもあります。
もちろん、プログラマーのようにプログラム作成に携わることもありますし、作成したプログラムのテストを行うこともあります。
場合によっては、営業担当者と一緒に顧客に対する提案業務に携わることもあるでしょう。
要するに、システムエンジニアはシステム開発において発生する作業のほとんどを担当する可能性があるのです。
誤解を恐れずにいうと、「システム開発現場における何でも屋」のような立ち位置で臨機応変に立ち回るのが、システムエンジニアという職種だと定義することができるでしょう。
とはいえ、すべてのシステムエンジニアがシステム開発におけるすべての仕事に携わるわけでもありません。
要件定義や設計を中心に手掛ける「上流工程専門のシステムエンジニア」もいますし、詳細設計、プログラミング、テストといった「下流工程を得意とするシステムエンジニア」もいます。[*3]
[*3] システム開発のプロセスを川の流れになぞらえ、上流=開発初期の工程を上流工程、後半の工程を下流工程と呼びます。通常は要件定義と基本設計までが上流工程に、詳細設計、プログラミング、テストが下流工程に含まれます。
中には、システムエンジニアの求人に応募して入社したにもかかわらず、「まずはプログラミングからお願いします」と言われて、毎日プログラムコードだけを書いている人もいるでしょう。
実は、私は「システムエンジニア募集!未経験可」という求人広告を見て、飲食店勤務から唐突にシステムエンジニアに転職しました。
振り返ってみると、入社後1~2年はプログラミングとテストばかりしていた記憶があります。
それから長い時が流れ、今は上流工程と最下流のテストを専門に扱っています。
このように、企業の方針やプロジェクトの状況によって手掛ける作業の内容が変わる点が、システムエンジニアの特徴です。
システムエンジニアは日本独自の職種!?
実は、「システムエンジニア」は、日本独自に発展した職種だといわれています。
欧米では、システム開発のプロジェクトについて、システムコンサルタント(企画・提案)、設計者、プログラマー、テスターといった職種ごとの縦割りで構成されます。
設計者は設計だけ、プログラマーはプログラミングだけを専門的に担当するケースが多いといえます。
それに対して、日本では伝統的に、一人のエンジニアが要件定義・設計からプログラミング、テストまでを通して担当することが少なくありません。
このような背景事情から、システム開発に関わるいろいろな仕事を手掛ける「システムエンジニア」という職種が誕生したと考えられます。
システムエンジニアの実態を掴みにくいのは、このような経緯にも理由があるのかもしれませんね。
プログラマーに向くのはどんな人?
最後に、プログラマーとシステムエンジニアそれぞれについて、どんなタイプの人が適しているのかを考えてみましょう。
プログラマーに向いているのは、何はさておき「プログラミングが好きだ」という人です。
自分が操るプログラミング言語について熱心に勉強し、より良いコーディングを追求していく職人タイプの人は、プログラマーに向いているといえるでしょう。
同じ設計書をもとにしていても、プログラムコードの書き方次第でシステムの性能や品質は大きく変わります。
特に、処理スピードや軽快な操作感が重視されるようなシステムは、プログラムコードの書き方に工夫が求められます。
「処理速度を1秒縮めるため、あらゆる技術を駆使してプログラムコードのブラッシュアップをする」といった仕事に魅力を感じるような方は、プログラマーを目指すことをお勧めします。
なお、専任のプログラマーを目指す人は、求人に応募する際、それが本当に専任プログラマーの求人なのかを事前に確認しておきましょう。
プログラマーとして採用し、経験を重ねた後、システムエンジニアとして他の作業を担当させたいと考える企業は、まだまだ数多くあります。
入社した後で「こんなはずじゃなかった…」と失望することのないよう、面接の場などで企業側の意図をきちんと確認しておくことをお勧めします。
こんなタイプはシステムエンジニアに向いている
システムエンジニアは「何でも屋」なので、いろいろな仕事を臨機応変にこなせる「器用」な人に向いています。
最近では要件定義、設計、プログラミングからテストまで、すべての作業を一通りこなせるエンジニアを「フルスタック・エンジニア」と呼び、多くのプロジェクトにおいて渇望されています。
加えて、要件定義や設計を行う際にはクライアントとの折衝やチームメンバーとの連携が必要となります。
したがって、高いコミュニケーションスキルを有する人も重宝されるでしょう。
なお、同じ「システムエンジニア」の募集であっても、実際に担当する仕事の内容はプロジェクトの方針によって異なります。
設計メインの上流工程エンジニアなのか、プログラミングやテストを中心に手掛ける下流工程のエンジニアなのか、求人に応募する際に確認しておくと入社後のギャップが少なくて済むはずです。
【最後に】両者の違いを意識して転職活動に活かそう!
これからIT業界を目指す人は、まずはプログラマーとエンジニアの違いを理解しましょう。
その上で、自分が目指したいのはどちらの職種なのかをあらかじめ明確にし、転職活動に臨んでください。
もし、自分が目指したい職種がうまくイメージできないのなら、例えばインターン制度などを利用してみてはいかがでしょうか?
実際にシステム開発現場の雰囲気を体験できるので、仕事の具体的なイメージを抱くことができるはずです。
インターン制度を利用できないのなら、未経験者可のアルバイトや短期の人材派遣案件を通じて仕事に飛び込んでみるのもありです。
また、オンライン学習サービスやITスクールなどを利用して、それぞれの仕事を体験してみるのもお勧めです。
最近は、システム開発の様子を模擬体験できるコースを提供しているスクールもありますので、そうしたものの活用もぜひ視野に入れてみてください。