就活生にも知ってほしい!プログラマーとエンジニアの違いについて
このコラムはITエンジニアを目指して就活をしている人を対象に、さまざまな情報をわかりやすく解説していきます。
このコラムは主に就活をしている学生を対象に、ITエンジニアを目指して活動する上で役立ちそうな情報をお届けしていくコラムです。もちろん就活生以外にも役立つ内容となっていますのでぜひご覧ください。
ITの世界に興味を持っているという人から「プログラマーという言葉は知っているけどエンジニアは知らない。違いって何??」という話を聞きました。
なので、今回はその違いについて書いてみたいと思います。
目次
プログラマーとエンジニアの違い
エンジニアとは、情報技術(IT)の知識やスキルを持っている技術者の総称です。プログラマーもITの知識やスキルを持つ職種の1つなので、エンジニアに含まれます。
一方でシステム開発の世界ではエンジニア=システムエンジニア(SE)を指すことが多いのですが、システムエンジニアとプログラマーの違いとして考えてみると、その違いはハッキリしてきます。
注意:エンジニアという言葉は本来的には機械や電気、土木に関わる技術者全般のことを指しますが、この記事に中では情報技術(IT)に関わる技術者を指す言葉として使いたいと思います。
プログラマーとは
プログラマーの定義
プログラマーとはその名前の通り「コンピューターのプログラムを作成する人」のことです。
そのプログラムというのは、簡単にいうとコンピューターに動いて(処理して)欲しい事柄を順番に書き出したもの、のことです。
コンピューターは命令しないと動かない"ただの箱"です。例えば「歩く」ということを人に教えようとしたとき、「右手を前に出したら左足を前に出し、左手を前に出したら右足を出し・・・」という動いてほしいことを順番に教えることになりますが、これをコンピューター相手に行うことがプログラム、ということになります。
なので、プログラマーとはコンピューターに動いてほしいことを順番に整理して、コンピューターが理解できる形式で命令をするものを作る人、ということになります。
プログラマーの仕事
テレビなどの映像の世界でもよく目にしますが、プログラマーという職種には黒い画面を見ながら一心不乱に英数字(コード、と呼ばれます)を記述しているようなイメージがありますよね。また、いわゆるハッカーと呼ばれる人たちもある種のプログラマーといえるでしょう。
そんなプログラマーの仕事ですが、先に書いた通りコンピューターへの命令をコンピューターが理解する形で作ることではありますが、コンピューターが理解する形で、というところがポイントで、理解してもらうために「プログラミング言語」というものを使います。
代表的なプログラミング言語として、C、C++、C#、Java、Python、PHPなどがあげられます。
このように種類は色々ありますが、使うプログラミング言語はプログラムの用途、例えばスマホアプリを開発したいのか、サーバー上で動くプログラムを作りたいのかで変わってきます。
プログラマーだからといって全て覚える必要はありません。
まずは自分がやりたい仕事に必要なプログラミング言語のスキルをみがきながら、目的に応じては新たな言語や周辺の知識やスキルの習得を目指しランクアップを目指しましょう。
プログラマーの将来性
ITはいわゆる「IT業界」にとどまらず、旅行や飲食、教育など様々な業種業界に広がっています。そのためプログラムを作っていくプログラマーに対するニーズは強いものがあります。
プログラミング言語などは年単位で進化していくのでそれに対応できるような学習を日々積み重ねていけば、きっと活躍できるプログラマーになれることでしょう。
一方で、プログラミングを人の手ではなくAIに任せたり、(プログラミングの仕事は居住地に左右されないので)海外のプログラマーとの競争が激しくなったりという動きもありますので、活躍し続けるためにはなおさら継続的なスキルアップが求められる、という厳しさもあるかもしれません。
エンジニアとは
エンジニアの定義
エンジニア、特にITエンジニアは情報技術(IT)の知識やスキルを持っている技術者の総称ではありますが、IT業界ではシステムエンジニア(=SE)を指すことが多いので、システムエンジニアを解説の対象として紹介していきます。
システムエンジニアは技術的な知識をベースにお客様の要望や要求に沿って仕様や仕組みそのもの、つまり、システムを作るのが仕事です。実際の作る部分はプログラマーに任せることが多いので、任せるために必要な設計書を作るのが仕事となります。
システムは「個々の要素が有機的に組み合わされた、まとまりをもつ全体。体系。」です。
つまり、モノとモノがつながることで機能する仕組みを様々な技術を用いて生み出す設計書を書く人がシステムエンジニアです。
エンジニアの仕事
システムエンジニアの仕事は、先に書いた通り「お客様の要望や要求を設計書の形にまとめる」ことになりますが、その設計書は大きく要件定義、設計、テスト、管理・運用の4つに分かれます。
要件定義
要件定義とは、お客様の希望を伺ってそれを実現するために必要な機能や開発にかかる期間、費用などを算出することです。しっかりお客様と会話して、話の裏に潜む課題やニーズを引き出すようなコミュニケーション力が求められる範囲ですね。
設計
お客様の要望を実現するためのシステムの設計をする段階です。プログラマーの力をうまく発揮できるような設計書を作ることが大事になります。
テスト
プログラマーが作成したものが設計通りに動くのかどうかをテストする段階です。前段階でまとめた要件定義や設計の通りに動くのかどうか、動かなければどうして動かなかったのかを調べて修正する、ということになります。
管理・運用
作ったシステムをお客様のユーザーに安心して利用してもらうため、日常的な管理や運用も行います。障害が発生したときは原因の特定から解決まで行い、システムの復旧をさせることが大事です。
エンジニアの将来性
システムエンジニアについては、この先も需要がなくなることはないと思います。
というのも「あんなサービス提供したい」「こんなシステムが欲しい」という願いが途切れることはないわけで、技術の進歩が進めば進むほどできることも広がるので、もっとやりたいことが増えてくるのではないでしょうか。
もっと言えば、人材が足りないというのが現状です。
経済産業省が公表したデータによると、2030年には最大79万人の人材不足が懸念されています。なので、多くの人がエンジニアを目指してもらえたらと思います。
拍車かかるIT人材不足、採用支援企業たちが打ち出す新たな一手|ニュースイッチ by 日刊工業新聞社こちらは、拍車かかるIT人材不足、採用支援企業たちが打ち出す新たな一手のページです。日刊工業新聞社のニュースをはじめとするnewswitch.jp
「違い」のまとめ
一般的には、システムエンジニアがモノとモノをつなげる仕組みを定義・設計し、プログラマーはその仕組みを特定のプログラミング言語で開発します。
なので、プログラミング知識が無くてもシステムエンジニアは務まるし、システムエンジニアに必要なスキルがプログラマーに求められることはありません。
ただ、実際には企業の規模によってはシステムエンジニアであってもプログラミングのスキルを求められることもあるでしょうし、その逆もあることでしょう。ただそれによって設計もできるしプログラミングもできる、という2つのスキルを持つチャンスになるかもしれません。
就活中の皆さんの中で、漠然とエンジニアを目指す人、またプログラマーを目指す人、まさに人それぞれだと思いますが、どちらを選択したとしても、その後のキャリアパスは知識の習得と経験によって左右されていきます。
その時々で自分のなりたい姿を考えて、柔軟な姿勢でキャリアを築いてもらえればと思います。
IT関連の資格取得のススメ
プログラマーを目指すかシステムエンジニアを目指すか悩む人におすすめなのが、IT関連の資格の取得です。
学習をしたときに「自分に合うのはこっちだな」と思えてくると思うので、働き始める前に資格取得を目指した学習を通じて自分に合うのがどちらなのかを感じてもらえればと思います。
プログラミング言語ではJavaやPythonのベンダー資格試験が数多く存在します。特定のプログラミング言語に関する知識や技能が一定の水準以上であることが証明でき、海外でも通用する資格もあります。
テレビゲームが好きで漠然と自分もこんなゲームが作ってみたいと思ったら、テレビゲームの開発に使われているプログラミング言語などについて調べてみるところから初めてみても良いでしょう。とっかかりがプログラマーであっても、さまざまな知識の習得や多くの経験を通じてプロジェクト全体の進行を管理していくプロジェクトマネージャに転身するキャリアパスもありえます。
国家資格の基本情報処理技術者試験はプログラミングを含むコンピューターの基礎をはじめ上流工程について幅広く学べますし、私たちLPI-Japanが運営しているLinux技術者認定「LinuC」などはLinux(OSの1つです)こそベースになっていますがクラウド時代のITエンジニアとして上流を目指す人が身につけたいITに関する基礎知識が習得できる資格です。
ITエンジニアを目指すなら自分を信じて新しいことに果敢にチャレンジですよ!