プログラマとは?
プログラマとは、さまざまなシステムやソフトウェアを作る仕事です。プログラミング言語を用いてコンピュータに命令を出し、コンピュータが決まった動作を行えるようにします。開発が完了したらシステムが正しく動くかテストを行い、問題なければシステムを外部に公開します。その後のシステムが古くなったり、ユーザーから要望があった場合、システムの改良を行うこともあります。
プログラマとシステムエンジニアはよく混同されますが、厳密には担当箇所が異なります。システムエンジニアはシステム開発の前段階である設計を担当します。顧客の要望をヒアリングして要件をまとめて設計書を作成し、その設計書をプログラマに渡して開発を依頼します。
ただ、プログラマとシステムエンジニアの違いは曖昧なことも多く、プログラマを名乗っている方でも設計まで担当している場合もあります。また、求人票に「システムエンジニア」と書かれていてもプログラミング業務が中心である場合も多くあるため、転職時には各企業の業務内容をよく確認する必要があるでしょう。
プログラマの種類
ここでは、プログラマの種類についてまとめました。一口にプログラマといってもさまざまな種類があり、仕事内容や必要なスキルがそれぞれ異なります。プログラマを目指す方は違いを理解しどれを目指すべきか考えることが重要です。
Webプログラマ
WebプログラマはSNSや掲示板、ECサイトなどのWebアプリを開発するプログラマです。一般ユーザー向けに開発を行うこともあり、プログラマの中でも人気が高い職種です。WebプログラマはPHPやPython、Rubyなどの言語を使います。
また、フロントエンド側の開発ではJavaScriptが用いられることが多いです。
これらの言語はコンパイルと呼ばれる翻訳作業(機械語への翻訳)を事前に行わずに、実行時にコンパイルする方式を採用しているため、スピーディーな開発が求められる分野と相性が良いです。
スマホアプリプログラマ
スマホアプリプログラマは、スマホにダウンロードして使うゲームやツールなどのアプリを開発します。スマホにはAndroidとiOS(iPhone)の2種類があり、それぞれのスマホアプリの開発では別々の言語を使用します。
Android向けアプリの開発ではJavaやKotlin、iOS向けアプリの開発ではSwiftやObjective-Cが使われることが多いです。そのためスマホアプリ開発に携わりたい場合は、どちらのスマホアプリの開発を行うかまず決める必要があるでしょう。
ゲームプログラマ
ゲームプログラマは家庭用ゲーム機やスマホゲームなどを開発するプログラマです。キャラクターの動きや会話、戦闘システムなど1つ1つ正常に動作するように作る必要があります。
家庭用ゲーム機の開発ではC++が使われることが多いです。C++はC言語が元となって作られた言語であり、学習コストが高い反面オブジェクト指向で書くことができ、かつ処理速度が速くゲーム開発向きであるのが特徴です。
また、スマホゲームの開発にはゲーム開発エンジンとUnityで使える言語であるC#が使われることが多いです。
汎用系システムプログラマ
汎用系システムとは銀行や政府機関で稼働している大型コンピュータのことであり、汎用性システムプログラマはこのシステムの開発を行います。汎用系は社会インフラとも呼べるものであり、私達の生活になくてはならない存在です。そのため、汎用性システムプログラマは昔から安定して仕事があります。
汎用系システムの開発にはCOBOL言語が使用されることが多いです。COBOLはソースコードの可読性が高い上に、丸め誤差が発生しない仕様になっているため、ミスが許されない箇所で使用されています。
組み込み系システムプログラマ
組み込み系システムプログラマは、エアコンやカーナビなど家電製品に組み込まれるシステムを開発します。最近ではIoT製品というネットに接続された家電製品が注目されていることもあり、組み込み系開発の需要も高まっています。組み込み系では処理速度がトップクラスに速いC言語が古くから使われています。
パッケージソフト系プログラマ
パッケージソフトは、会計ソフト・経理ソフト・ウィルスセキュリティソフトなどパソコンにインストールして使うソフトのことであり、ネットに接続して使えるWebアプリとは対照的な存在であると言えます。このパッケージソフトの開発を行うのが、パッケージソフト系プログラマです。パッケージソフトの開発にはC#やC++、Javaなど企業によってさまざまな言語が使われています。
通信系プログラマ
通信系プログラマは、データの送受信を行うWi-Fiルーターやモデムなどを開発するプログラマです。最近ではテレワークの普及によりテレビ会議システムを使う機会が増え、通信機器開発の需要も高まっています。
通信系の開発にはC言語・C++・Javaなどが多く使われており、プログラマは通信規約やプロトコルに関する知識も備えている必要があります。
未経験者はどのプログラマを目指すべき?
未経験の方はどのプログラマを目指すべきなのか、選び方について解説します。どのプログラマになるかによってその後のキャリアも大きく変わっていきます。選び方は大きく分けて3種類あります。
開発したいものによって選択する
開発したいものがあるなら、そちらを優先して選択した方が良いです。たとえば、SNSに興味があり新しいサービスを生み出したいと考えるなら、Webプログラマを目指しましょう。
プログラマにとって「開発したい」という意欲は大切です。なぜならITスキルは最新のものが次々と出てくるため、プログラマは学習し続けなければならず、それを継続させるには「開発が好き」という気持ちが重要だからです。
スキルの難易度で選択する
早めにプログラマに転職したい場合は、言語の難易度で選択する手もあります。プログラミング言語は難易度が種類によって大きく異なります。たとえば、Ruby・PHP・PythonなどWebアプリ向け言語や、KotlinやSwiftなどのスマホアプリ向け言語は難易度が低いと言われています。
その反面、C言語やC++などの言語は難易度が高めです。難易度が低い言語は学習時間があまり取られないため、早くプログラマに転職しやすいでしょう。
また、ゲーム開発や機械学習など、開発分野によっては言語以外に高度な数学の知識が必要な場合もあります。言語以外の知識を今から習得できるかもポイントとなってくるでしょう。
需要・将来性の高さで選択する
プログラマに転職して年収を上げたい場合は、需要・将来性の高さで選択しましょう。たとえば機械学習・データ分析・ディープラーニングといった分野は、我々の生活を大きく変えると言われており近年注目が増しています。そして、これらの分野で活用できるPythonは将来性が高いと言われています。
反面、将来性の低い分野を選択してしまうと、今後仕事量が減ってしまう可能性もあります。需要・将来性の高さもプログラマに転職する際の参考にしてください。
プログラマに共通して求められるスキル
最後に、プログラマに共通して求められるスキルについてまとめました。プログラマを目指す方はこれらのスキルを高めていくことをおすすめします。
プログラミングスキル
プログラミング言語の文法を理解し使いこなせないと、プログラマにはなれません。それだけでなく、アルゴリズムも考慮した効率的な処理を考えたり、第3者から見て読みやすいソースコードが書けたりする必要があります。
このようなプログラミングスキルは、オンラインの学習サービスや書籍などを使って独学で習得することが可能です。独学が難しい場合はプログラミングスクールを活用し、講師の方に1から教えてもらうのがおすすめです。
テストができる能力
プログラマにはテストができる能力が求められます。システムやアプリは開発して終わりではなく、仕様通りに動くかのテストが必ず行われます。テスト時にはテスト項目に従って順序よく確かめていき、テスト項目を自分で作る場合は、システムのどういった部分をテストすべきなのか考える力も求められるでしょう。
プログラマを目指すならプログラミング能力だけでなく、テストの能力も磨く必要があります。
設計書を読み取る能力
設計書を読み取る能力もプログラマにとって大切です。プログラミング作業は基本的に設計書に従って行いますが、設計書を正しく読み取れないと想定とは異なる機能を作ってしまう可能性があります。
異なる機能を作ってしまうと開発が最初からやり直しになる場合もあり、納期に間に合わなくなってしまいます。そのため、プログラマは設計書を読み取るための読解力も重要です。
コミュニケーションスキル
コミュニケーションスキルもプログラマにとって大切です。開発作業は1人ではなくチームを組んで作業分担しつつ行うことがほとんどです。コミュニケーションスキルが欠けているとチームと連携が取れず、開発作業が遅れてしまうこともあります。また、転職時の面接でもコミュニケーションが正しく取れる人かチェックされます。
プログラマに必要なスキルを理解してから勉強をはじめよう
本記事ではプログラマの種類について解説しました。各プログラマの仕事内容などがお分かりいただけたかと思います。プログラマへの転職を目指す場合、まずは必要なスキルを理解することが肝心です。そしてそのスキルの獲得にはどれだけの時間がかかるか、自分でも獲得できるスキルであるかを検討しましょう。
スマホ・パソコンが普及しシステムやアプリが身近になった昨今、プログラマの市場価値は上がってきています。プログラマに興味のある方はぜひスキルを磨き転職を目指してみてください。
あなたの転職を丁寧にサポートします。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから