参考記事
・SESとは? ブラックSES企業の見極め方やエンジニアのキャリアパスと合わせて解説
・SESは本当に“踏み台”なのか? 自社開発からあえてSESを選んだ2人に聞いてみた
・エンジニアがSIerで働く魅力とは? 未経験でもOK? 自社開発やSESとの違いも詳しく解説
これまでアナログだった業界にもIT化の波が訪れ、ますます需要が増加しているIT人材。中でもプログラマーは、エンジニアの登竜門として初心者が最初に目指す職種の一つです。
この記事を読んでいる人の中にも、「プログラマーになりたい」という人やプログラマーになったばかりのIT初心者も多いのではないでしょうか?
そこで今回は、プログラマーの仕事内容からプログラマーになるために必要なスキル、キャリアについてなど、IT初心者が知りたい情報を徹底解説! 自身の今後のキャリアを考える役に立つはずです。
プログラマーとは、システム開発の現場においてプログラミング言語を使ってコードを書く、つまりプログラミングをする人のことを指します。
プログラミング言語とは、コンピューターが理解できる言葉のことです。プログラマーは、人間の言葉をコンピューターが分かる言葉に変換し、指示を出すいわば通訳のような仕事をしています。
一口に「プログラマー」と言っても、後に紹介する「プログラマーの種類」によって使用するプログラミング言語や開発するモノは異なります。
それでは、プログラマーにはどのような種類があるのか、具体的な仕事内容やシステムエンジニアとの違いなど、プログラマーについて詳しく解説していきます。
プログラマーのミッションは、システムを仕様書通りにプログラミングすることです。ただプログラミングして終わり……ではなく、設計のミスやバグを洗い出す作業もプログラマーの仕事に含まれます。
それではプログラマーの仕事の内容を順に見ていきましょう。
開発とは、設計工程で決めた設計書・仕様書を基にプログラミングしていく工程で、プログラマーのメイン業務です。
複数のプログラマーとチームでプログラミングすることが多く、ミスのないコードを書くことはもちろん、その後の運用・保守がしやすいように誰が見ても分かりやすいコードで記述することも大切です。
テストとは、完成したシステムが正常に作動するかを検証・評価することを指します。具体的にはプログラムの動作テストを行い、出てきたバグの修正を重ねます。
テストはプログラマーが担うケースも多いですが、テストを専門に担うテストエンジニアが担当する場合もあります。テストエンジニアは基本的にマニュアルに沿って進めていくため、エンジニア経験がない人が最初に配属されることが多いポジションです。
中にはテスト計画やテスト設計の立案や各工程の管理など豊富な経験がなければできない仕事を担う人もいます。
運用・保守とは、すでに稼働しているシステムのメンテナンス業務です。運用・保守は同義のように捉えられることが多いですが、厳密には少し違います。
運用はシステムが安定的に稼働するようにデータを入力したり、定期的なアップデートをしたりするのが主な業務で、障害が発生した時も手順書に沿ったオペレーションしかしません。一方で保守はシステムに障害が発生した時に改修や調整を行うのが主な業務です。一般的には運用担当として経験を積んだ後に保守担当となることが多いでしょう。
大規模なシステムの場合、運用・保守はそれぞれ別の人が担当することが多いですが、中小企業などの場合はどちらも兼任することがあります。
システム開発には上流工程や下流工程と呼ばれるものがあり、設計は上流工程に含まれます。設計は、クライアントのニーズに応じてシステムに必要な要件を決めたり、設計書・仕様書を作成したりする工程です。
一般的に、設計はシステムエンジニアが担う業務の一つですが、企業によっては経験豊富なプログラマーが担当することも。クライアントとの折衝や開発部隊の橋渡しなどの業務があるため、技術面はもちろんコミュニケーションスキルやマネジメント能力なども求められます。
冒頭でも少し述べましたが、プログラマーは開発するシステム、サービスなどの内容に応じていくつかの種類に分けられます。種類が異なれば使用するプログラミング言語や働き方なども変わってくるため、「自分がどんなものを開発したいか」という視点とともに、自分の技術や志向性なども考慮して職場を選ぶことが大切です。
プログラマーの種類の代表的なものを紹介します。今回紹介したもの以外にも、さまざまな種類があるため、気になる人はぜひ調べてみてください。
Web系とは、ショッピングサイトやSNSなどのWebアプリケーションやWebサイトのことを指します。Web系のシステムは不特定多数のユーザーを想定しているため、エンジニアには早い処理やユーザービリティーに関する知識などが求められます。
Web系のエンジニアは、ユーザーの目に触れる部分を担当する「フロントエンド」とサーバーやネットワークなどユーザーの目に触れない部分を担当する「バックエンド」、そのどちらも担当する「フルスタック」の三つに分けられます。今後Web系エンジニアとしてキャリアを築くのであれば、フロントエンドの知識、バックエンドの知識両方とも一定レベルで付けておくのがおすすめです。
<キーワード>
PHP、Ruby、Perl、Java、JavaScript、HTML、CSSなど
オープン系とは、業務系のシステムやアプリケーションのことを指し、ネットワーク内のすべてのコンピューターが情報にアクセスできるという特徴があります。オープン系はWeb系と混同されることが多いですが、Web系が幅広いユーザーを想定しているのに対し、オープン系は企業ごとに特化したシステムであるという特徴があります。
それまで主流だったクローズドなシステム(汎用系)と対比するかたちでオープン系と呼ばれるようになりました。
<キーワード>
UNIX、LINUX、Java、C#、C+、PHP、Ruby、Python、JavaScript、VB.NETなど
汎用系とは、メインフレームやオフコンと呼ばれる1台の大型コンピューターのみで作動するシステムのことを指し、大企業や金融業界など高いセキュリティーが求められる場面で使用されています。
汎用系システムは導入から時間が経っていることから「レガシー」と呼ばれることもあり、近年はオープン系に移行する傾向にあります。といっても、汎用系システムはこれまで膨大なデータやノウハウを蓄積しており、一朝一夕で移行できるものではありません。今後も汎用系システムの需要はあると考えていいでしょう。
<キーワード>
COBOL、IBM、日立、富士通、NEC、Java、FORTAN、PRG、PL/1、Cなど
組み込み系とは、家電や自動車などに組み込まれるシステムのことで、主にメーカーで使用されています。これまで組み込み系システムは、特定の機能を実行する単純なものがほとんどでしたが、近年はIoTなどの進化に伴い、センサーから得た情報の内容によって動作を調整するということも求められています。
また、組み込み系のシステムは限られたメモリの中で正確な動作をすることが求められ、コスト面にも配慮する必要があります。組み込み系は、制約が多い中で高いパフォーマンスが求められるシステムなのです。
<キーワード>
C、C++、C#、Java など
アプリケーション系とは、主にパソコンやスマートフォン、タブレットなどのアプリケーションのことを指し、特にスマートフォン向けのアプリケーションはモバイル系と呼ばれます。オープン系と同様に、IT業界の中でも特に技術の流行すたりが激しいため、常にアップデートが必要な分野です。
一口に「アプリケーション系」と言っても、デバイスにインストールして使う「ネイティブアプリ」やブラウザ上で利用する「Webアプリ」、売り上げ管理や交通費計算などの業務上で使用する「業務系アプリ」などに分けられ、デバイスによっても必要な知識は異なります。
<キーワード>
iOS、Android、Java、Swift、Ruby、PHP、Kotlin、C、C#など
プログラマーの働き方は二通りあり、クライアントの企業内で働く場合と、自社内で働く場合に分けられます。さらに自社内で働く場合、自社サービスを手掛けるケース、クライアントのシステム開発を手掛けるケースがあります。
クライアントの企業内で働く「客先常駐」の形態はSES会社に多く、一定期間でさまざまな現場に移るため、コネクションが広がったりさまざまな技術に触れられたりする点や、人間関係のしがらみを長く引きずることがない点がメリットとして挙げられます。
一方でプロジェクトごとに働く場所やメンバー、労働時間や職場の雰囲気など環境面が大きく変わるため、プロジェクトが変わるごとにイチから人間関係を築くことを「煩わしい」と感じる人もいるでしょう。また希望のプロジェクトにアサインしてもらえなかったり、待遇が上がりづらかったりするデメリットもあります。
自社サービスを手がける社内で働く自社開発エンジニアは、一般的には仕事量が調整しやすかったり、自分が手掛けたサービスに対する評価を実感しやすかったりする点がメリットとして挙げられますが、一方でそもそも経験が浅い人が入社するのが難しい点やスキルが偏りやすい点がデメリットです。
「SIer(システムインテグレーター)」で働くプログラマーは、自社で働きつつもクライアントのシステム開発を手掛けます。SIerのエンジニアとして働く場合、規模の大きい開発案件に携われる可能性があり、またSESと同じようにさまざまな技術に携わりやすいこともメリットとして挙げられます。ただし、技術的なチャレンジや最先端技術を用いた開発には関わりにくい傾向があります。
どんな働き方にもメリット・デメリットはあります。自分の志向性や目指したいキャリア、性格などに合わせて職場選びをするのがポイントです。
参考記事
・SESとは? ブラックSES企業の見極め方やエンジニアのキャリアパスと合わせて解説
・SESは本当に“踏み台”なのか? 自社開発からあえてSESを選んだ2人に聞いてみた
・エンジニアがSIerで働く魅力とは? 未経験でもOK? 自社開発やSESとの違いも詳しく解説
カカクコムの「求人ボックス 給料ナビ」によると、プログラマーの平均年収は438万円で日本の平均年収である411万円と比較するとそれほど高くはありません。一方で、給与幅としては313万円~843万円と幅広いことから、スキルや経験などによって給与額が大きく変わることが分かりますね。
プログラマーの平均年収が低いことにがっかりした人もいるかもしれません。この理由は、プログラマーは開発工程における下流工程の仕事が多いから。またプログラマーはエンジニアの仕事の中でも比較的初心者が手を付けやすいことも、平均年収が低い理由の一つです。プログラマーとしての経験を積んでキャリアアップし、上流工程を担当できるようになったり、新しい言語を習得したりとスキルを磨くことで着実に収入アップすることができますよ。
ちなみに、プログラミング言語別の求人提示年収ランキングを見ると、Scala、TypeScript、Go言語、Kotlin、Pythonなど、比較的新しい言語や汎用性の高い言語の提示年収が高いことが分かります。収入アップを目指す人は提示年収の高いプログラミング言語を習得してみるのもいいですね。
プログラマーと混同されやすい職種の一つにシステムエンジニアがあります。一般的にシステムエンジニアはプログラマーの上位職とされており、「プログラマーの仕事って?」の設計工程、つまり上流工程を担当する人のことを指します。
システムエンジニアの主な仕事内容は「クライアントへのヒアリング」や「仕様書・設計書の作成」、「プロジェクトの管理」で、一般的にプログラマーとシステムエンジニアは別の職種ですが、企業によっては両者の境界線があいまいで、システムエンジニアが開発工程も兼任していたり、経験豊富なプログラマーがクライアントの折衝業務を担っていたりすることも。
やりたい仕事ややりたくない仕事が明確に決まっている人は、会社選びをする際に業務範囲をしっかり確認しましょう。
参考記事
冒頭で「プログラマーは初心者が目指しやすい職種」とお伝えしましたが、そうは言ってもITの知識やエンジニア経験が無い人にとっては、ハードルが高い職種なのではないでしょうか?
そこで今回は、プログラマーに必要な知識・スキルや未経験からプログラマーになる方法、持っていると有利な資格などについてご紹介します。これからプログラマーにチャレンジしようと考えている人は、ぜひ参考にしてみてくださいね。
プログラマーのメイン業務は、その名の通り「プログラミング」です。単に「プログラミングができる」と言っても、「ミスのないコードが書ける」というレベルから「既存のシステムを利用しながら効率的なコードが書ける」「シンプルで美しいコードが書ける」というレベルまで幅広く、スキルアップにはやはり経験が必要です。
まずは「ミスのないコードが書ける」というレベルを目指し、プログラミング言語の習得を目指しましょう。新しくプログラミング言語を習得する時は、自分が携わりたい分野で使用されている言語を選ぶのはもちろん、先ほどご紹介した「求人提示年収ランキング」や「人気ランキング」、難易度などを参考にするのがおすすめです。
先ほど「プログラマーの種類とは?」でも紹介しましたが、担当する領域が異なれば必要な知識は大幅に変わります。例えばWeb系のプログラマーであれば、デザイン面やUI・UX、SEOなどのフロントエンドに関する知識やサーバー・データベースなどのバックエンドに関する知識などを両面から学ぶことはとても大切です。
また、IT業界は技術の流行すたりの早い業界です。新しい技術に乗り遅れないように、常にアンテナをはっておきましょう。
プログラマーはPCに向かって黙々と仕事をするイメージがあるかもしれませんが、現実は少し違います。前述したように、システム開発は複数人のチーム体制で作業を進めることが多いため、時には他社の人ともコミュニケーションを取りながら進めていく力が必要です。
また将来的にシステムエンジニアやITコンサルタントなどを目指すのであれば、クライアントとの折衝経験を積んでおくことも大切です。
先ほどから述べている通り、プログラマーは初心者が目指しやすい職種の一つです。プログラマーとしてのファーストステップである「ミス無くコードが書ける」というレベルであれば、独学でも達することができるでしょう。
ある程度知識を身に付けた人や「実戦の中でスキルを磨きたい」という人は大手SES企業に就職するのがおすすめ。大手SES企業では、実務未経験者の採用も積極的に行っており、さまざまなプロジェクトを通じてスキルアップを目指せます。逆に中小企業や自社サービスを手がける企業では即戦力のエンジニアを求めていることが多いため、IT初心者にはあまりおすすめできません。
大手SIerは手厚い研修などがあるため、「未経験からスキルアップしやすい」と言われていますが、未経験者は新卒採用しか行っていないケースも。最近では、転職を前提としたプログラミングスクールもあるため、プロの力を借りながら効率的に学ぶのも一つの手ですよ。
資格取得は転職の際に有利になるのはもちろん、自分の知識量や理解度をチェックするツールとしても便利です。プログラマーにおすすめの資格を紹介するので、ぜひ参考にしてみてください。
基本情報技術者試験は、IPA独立行政法人が主催する国家試験で、エンジニアの登竜門として多くのIT人材が取得しています。プログラミングに関する知識はもちろんIT全般の知識が求められるため、自分が担当する領域以外の知識も身に付くのが特徴です。出題内容は幅広いものの難易度はそれほど高くないため、これからIT業界を目指す人におすすめの資格です。
応用情報技術者試験は、基本情報技術者試験と同じくIPE独立行政法人が主催する国家試験で、高度IT人材として必要な知識や技術を計る試験です。IT業界は資格よりも実務経験が重視される傾向が高いですが、応用情報技術者試験の資格を持っていれば就職や転職にかなり有利になると言っても過言ではありません。
Javaプログラミング能力認定試験は、サーティファイ情報処理能力認定委員会が主催する民間資格で、Javaに関する知識やプログラミングスキルを計る試験です。
1級~3級まであり、3級は実務経験の無い初心者、2級は初級プログラマー、1級は中級者以上を対象にしています。Javaに関するスキルを計る代表的な資格の一つなので、就職や転職はもちろん昇進にも役立つはずです。
Python3エンジニア認定試験は、一般社団法人Pythonエンジニア育成推進協会が主催する民間資格で、Python3エンジニア認定基礎試験とPython3エンジニア認定データ分析試験の2種類があります。
Pythonは近年急速に人気が高まっている言語ではありますが、現在国内で受験できる資格はこの資格しかありません。難易度も高くないため、これからプログラマーを目指す人は資格取得を目指してみてもいいかもしれません。
PHP技術者認定試験は、一般社団法人PHP技術者認定機構が主催する民間資格で、初級、上級、認定ウィザードの3種類があります。初級は学生や実務1~2年程度の初心者向けですが、上級の合格率は10%以下となっており、認定ウィザードは「持っているだけで就職や転職に有利」と言われるほどの難関資格です。PHPの導入実績が多いWeb系で活躍したいプログラマーは取っておいて損はない資格でしょう。
Ruby技術者認定試験は、Rubyアソシエーションが主催する民間資格で、RubyエンジニアはもちろんRubyを用いたシステム提案を行うコンサルタントやRuby講師など、Rubyを利用するすべての人を対象にしています。
現在「Silver」と「Gold」の二つのレベルの試験が実施されており、今後は「Platinum」も設立される予定です。Ruby技術者認定試験はRubyのスキルを証明できる数少ない資格の一つですので、Rubyエンジニアを目指す人はぜひチャレンジしてほしい資格です。
C言語プログラミング能力検定試験は、サーティファイ情報処理能力認定委員会が主催する民間資格で、その名の通りC言語のプログラミングスキルを計る試験です。1級~3級までありますが、3級はかなり初歩的なレベルになっているため初心者の腕試しにおすすめ。履歴書に書くなら2級以上を取得するのが望ましいでしょう。
冒頭で「プログラマーはエンジニアの登竜門」とお伝えした通り、プログラマーは業務を通じてさまざまなスキルを磨くことでキャリアが広がる職種です。
それでは、プログラマーのキャリアパスとしてどのようなものがあるのか、キャリアチェンジするならどのような職種があるのか……などを紐解いていきましょう。また、古くからちまたでささやかれている「35歳定年説」についても詳しくご説明します。
エンジニアはスキルや志向性によってキャリアが大きく変わる仕事です。特に近年は適性や志向性などによってプログラマーのキャリアパスは多様化しており、中には生涯プログラマーとして活躍する人もいます。今回は、もっとも一般的なプログラマーのキャリアパスについて紹介します。
知識やスキルレベルにもよりますが、未経験からプログラマーになった場合、初めはテスト工程や運用・保守工程、開発工程のプロジェクトにアサインされることがほとんどです。いずれも先輩のアシスタントとして少しずつスキルや経験を積んでいきます。
さまざまなプロジェクトを通じて、技術的なスキルはもちろん業務知識や人脈を広げていくことも大切です。
プログラマーとして1人前に開発工程がこなせるようになったら、小規模チームのリーダーやサブリーダーなどを通じてマネジメント面の経験を積みます。少しずつクライアントとの折衝の場に参加しながら設計工程を担当することも増えるでしょう。
会社によっては職種名が「システムエンジニア」に変わることもあります。
システムエンジニアとしてシステム開発工程のすべてを担当します。人によってはプロジェクトマネジャー(PM)のアシスタントやプロジェクトリーダー(PL)などのポジションでメンバーやプロジェクトのマネジメントを担うことも。技術者としてはもちろん管理者としてもさまざまな経験を積む中で、今後のキャリアを考える機会も増えるでしょう。
一般的には「マネジメント職」につく割合が多く、企業によってはそもそも「シニアエンジニア(スペシャリスト)」としてのキャリアが無いこともあります。
一口にプログラマーと言っても、どの領域で活躍するプログラマーなのかによって必要な知識やスキルは違います。が、たとえ数年でもプログラマーとして実務経験を積めば、ある程度システム開発の流れやプログラミング言語の仕組みを理解することはできるでしょう。
それらの知識を活かしてプログラマーと親和性の高い職種にキャリアチェンジするという手もありますよ。プログラマーがキャリアチェンジする時におすすめの職種を紹介しますので、ぜひキャリアプランを考える時に参考にしてみてください。
データベースエンジニアとは、必要なときに瞬時にデータを取り出したり、データを保存したりするシステムを構築するエンジニアのこと。AIやIoTなどビッグデータの活用が進むにつれて、需要が増えている職種の一つです。データベースエンジニアにはSQLの知識やOracle、MySQLなどのデータベース製品の知識が必要です。
インフラエンジニアとは、サーバーやネットワークなどシステムの基盤部分の構築や運用をするエンジニアのこと。インフラエンジニアにはWindows、Linux、UnixなどOSの知識や扱う製品に応じた知識が必要となります。Ruby、Python、Javaなどのプログラミング言語を扱っていた人であれば比較的キャリアチェンジしやすいでしょう。
TIOBEによると、プログラミング言語の数は250あるそうです。すべてのプログラミング言語を習得することは難しいですが、実はプログラミング言語によっては似ている構文のものも数多くあり、例えばC#とJava、SwiftとKotlinなどどちらか一方を習得していればもう一方も習得しやすいと言われているプログラミング言語もあります。
プログラミング言語の成り立ちを見るとある程度近しいプログラミング言語が分かるので、他言語を学んで別領域のエンジニアとして活躍するのも一つの手ですよ。
プログラマーは技術がモノを言う職種ですので、スキルさえあれば会社に属さずにフリーランスとして働くことができます。フリーランスとして独立する場合もあれば、副業で活動している人もいますよ。
フリーランスのメリットは場所や時間などに縛られない、やりたい仕事を選ぶことができるなど自由な働き方ができる一方で、自分を売り込むための営業力や事務的な作業も必要となります。
先ほども述べたようにプログラマーになって5~10年目はキャリアの転換期になりがちです。人によってはこのタイミングでマネジメント路線に進んだり、別職種に転職したりすることが多いことから、35歳前後でプログラマーの数が減る傾向にあるため、一時期「プログラマーとして活躍できるのは35歳くらいまで」という「35歳定年説」がささやかれていました。
しかし近年では本人の志向性や適性に合わせてキャリアを選べるケースも増えており、スキルさえあれば年齢に関係なくプログラマーとして働き続けることもできるようになってきています。実際に40代、50代になっても現役プログラマーとして活躍している人は多数いるため、「35歳定年説」は正しくないという主張が一般化しています。
ただしプログラマーとして年齢を重ねれば、自分よりも年下の管理者の下で働くことも増えるでしょう。さらに高年齢のプログラマーは単価が高くなる傾向があるため、アサインできるプロジェクトが少なくなることも考えられます。年齢を重ねてもプログラマーとして活躍したいなら、デメリットをはねのけるほどのスキルをしっかり身に付けておくことが必要です。
参考記事
・「毎晩コードを書きながら寝落ちする」“0x38歳”経営者に聞いた、生涯プログラマーでいる方法
・54歳プログラマーが30年以上もゲーム開発の最前線に立ち続けられるワケ「技術の“仕組み”を理解すれば、時代の変化に強くなる」
プログラマーはエンジニアの登竜門としてシステムエンジニアやデータベースエンジニアなどさまざまな職種につながる職種です。実力主義な世界だからこそ、年齢に関係なく誰もが活躍するチャンスがありますが、「35歳」というのは一つの区切りとして頭の片隅に置いておくといいかもしれません。
プログラマーは継続的に学び、スキルを磨き続けられる人が活躍できる職種です。未経験OKの求人広告も豊富にあり、門戸が広い職種ですので「未経験からIT業界で働きたい」と思っている人はぜひ目指してみてはいかがでしょうか?
文/赤池沙希
NEW!
NEW!
タグ