近年、IT業界の市場規模は拡大を続け、人材の不足からプログラマーの求人も増え続けています。
これまでの非IT職種からキャリアチェンジし、未経験からプログラマーを目指す人も増えているとのこと。
今回、本ページでは未経験からプログラマーを目指す人が、知識として知っておくとよいプログラマーの種類や仕事について解説してゆきます。
プログラマーは「プログラムを書く」職業
プログラマーとは
プログラマーはプログラミング言語を使いプログラムを組む(書く)職業です。
プログラム言語は実に200種類以上もあり、その中で使用されているのは10%前後といわれています。
経済産業省の「国内IT人材の動向と将来推計に関する調査結果」では、IT人材は17万人の不足といわれています。
なので、最近のIT人材不足もありプログラマーは「売り手市場」の職種となっているわけです。
エンジニアとの違い
よく「ITエンジニア」という言葉も聞きますが、これはITに関わる職種を広く指す言葉です。
ITエンジニアの中には、プログラマーを始めとして、システムエンジニア(SE)、インフラエンジニア、WEBエンジニアなど、ITに関わる多くの職種が含まれているのです。
メモ
単に「エンジニア」という言葉が使われることがありますよね。
でも「エンジニア」だけだと、機械設計のエンジニアなのか、機械製造・修理などのエンジニアなのか区別がつきません。
ITに関わるものなら『ITエンジニア』と呼ぶことをおすすめします。
プログラマーの仕事内容
プログラマーの仕事内容は、大まかには下記の仕事です。
- システム仕様書に従ってプログラムを組む
- 組んだプログラムの単体テストとバグ修正
- 言語によってはコンパイルを行う(実行プログラム生成)
大まかな仕事内容は上記ですが、プログラム言語が扱えて単体テストやコンパイルだけ出来ればいいワケでもありません。
プログラムの外枠となるフレームワークや、データベース・ネットワークの知識など、周辺知識も備えていないとプログラマーとしての仕事が成り立ちません。
プログラマーに必要な能力・スキル
プログラムを動かすための全般的な知識
扱うプログラム言語でコーディング(プログラムを書く)ができることは当然必要な基本スキルです。
基本スキル以外にも、1つのまとまったシステムやアプリを作り上げるには、様々な作業が存在します。
- プログラムソースのバージョン管理
- 複数の機能モジュールをまとめた管理
- データベースを扱うスキル
- アプリケーションの配置
- 開発する環境の整え方
- テスト技法・評価方法
こういった幅広い知識を学ぶ必要があります。
もしあなたがプログラミングを学ぶときには、こういった知識も一緒に学ぶことも考えた方がいいでしょう。
内部コミュニケーション能力
多くの場合、システム開発はチームで開発を進めます。
そのため、チームにおいてのコミュニケーション能力が求められます。
関係者との意思疎通が不足すると、行き違いによるシステム開発の後戻りなどが発生してしまいます。
駆け出しのプログラマーはもちろん、将来チームの中心的存在になる・・・といった場合には、よりコミュニケーションの重要さが増してきます。
外部コミュニケーション能力
システム開発の現場では、時には利用ユーザーとのコミュニケーションも必要になる場面があるかもしれません。
専門用語が通じない利用ユーザーとの会話では、相手の立場になり、理解しやすいコミュニケーションが必要となります。
マネジメントスキル
もの造りが好きで、ずっとプログラマーを続ける人も一定数はいます。
しかし、プログラマーを経てキャリアアップの道を歩む人も少なくありません。
キャリアを積み上げ「システムエンジニアとなって設計を行う」「プロジェクトマネージャーとなりプロジェクト管理をする」など。
そうなれば大小の違いはあっても、チームやグループを管理するマネジメントスキルが必須となります。
プログラマーの種類
WEBプログラマー
インターネットを介してブラウザなどで動くWEBシステムを作るプログラマーを指します。
パソコンにインストールするものではなく、オンライン上で使用するWebアプリケーションが中心、JavaやPHP、Perl等でプログラミングされることも多い。
アプリケーションプログラマー
企業の業務手順・業務ロジックに沿ってプログラムを作ります。
流通業、金融業、企業での社内会計など業務ロジックに則ってプログラムを組んでゆきます。
特にお金に関わる業種なら、より一層の正確性や確実性が求められ、併せてプログラムのメンテナンスのしやすさも重視されます。
Java・PHP・C・C++・JavaScript・シェルなど広範囲な言語が利用され、次いでデータベースやフレームワークなどのミドルウェア知識も求められるでしょう。
ITの技術的な面だけでなく、利用ユーザー側の業務的な知識やルールも把握する必要も出てきます。
オープン系プログラマー
WindowsサーバーやLinuxサーバーで作動する業務用システムを作ります。
インターネットやモバイル環境などオープンにつながるものや、イントラネットなど企業内で使われるものなど、様々な環境で作動するプログラムを対象としいて、Java・PHP・C・C++・Ruby・JavaScript・Visual C・VisualBasic等々、多種の言語が使われています。
汎用系システムプログラマー
よく大企業で使われている汎用コンピュータで作動するシステムを作ります。
銀行系・生命保険系・損害保険系・クレジットカードなどの分野で、COBOL言語を中心とした歴史あるプログラム言語を扱います。
汎用コンピュータは、IBM系のホスト機をはじめ、富士通系・日立系などがあり、同じCOBOL言語でも「方言」(独自の使い方)があるので注意が必要。
どちらかと言えばプログラム保守や改修の案件が多く、時には新規開発案件もあります。
ゲーム系プログラマー
Unreal EngineやUnityなどゲームエンジンと呼ばれる開発環境で開発されるのが主流です。
上記のようなもので、パソコンやゲーム専用機、スマホ等で作動するゲームソフトを作ります。
ゲームエンジンの利用でマルチプラットフォームの対応が容易で、言語はC・C#・C++等々、最近だとVR(仮装現実)やAR(拡張現実)などの「3DCG」知識も求められることもあります。
組み込み系システムプログラマー
まず、組み込み系ソフトウェアとは「組み込み機器に搭載されて動作するソフトウェア」です。
つまり、家電やウェアラブルデバイス、産業機械、IoTデバイス等に組み込まれ作動するシステムソフトですが、そのプログラムを作るのが組み込み系システムのプログラマーです。
Windows Embedded(ウィンドウズエンベデッド)のOSで、多くはC言語でプログラミングされ、ハードウェアの特定ポート・I/Oの直接制御も多用されるのでハードウェア知識も必要となってきます。
プログラマーの平均年収
dodaの「平均年収ランキング」では、ITエンジニア全体の平均年収は「452万円」と発表されています。
その中で、プログラマ・SEの年収は「417万円」となっており、全業種の平均「409万円」より高い傾向です。
若いうちにプログラマー経験を積んで、その経験を元に将来のキャリアアップを視野に入れると、さらなる年収アップも望めるでしょう。
プログラマー向きの性格とは?
論理的思考力
どっち付かずのふんわりとした考え方より、「AはXXXだからBとなる」といった論理的な思考が出来る人がプログラマー向きと言えるでしょう。
でも、もともとの性格に関わらず、プログラミングは慣れさえすればプログラムロジックが作れるので、あまり心配する必要はないでしょう。
調べ上手
プログラミングにおいては、何かでつまづいたとき「調べる力」が重要となります。
つまづいたとき、頻繁に同僚や先輩にアドバイスを求めるのも迷惑をかけます。
今はネットに膨大な情報がある時代なので、そこから必要な答えを探し出すスキル「調べる力」が必要不可欠なのです。
調べ上手は勉強においてもスムーズに進められる利点がありますね。
ガマン強さ
思うようにいかないことも多いプログラミング。
当然仕事ですから投げ出すことも出来ず、イライラしたり悩んだりするものです。
そんな時もガマン強い・忍耐力がある人は、あきらめず試行錯誤をして取り組めるので、プログラマーに向いていると言えるでしょう。
チームワーク
プログラマーはチームに入って開発を進めますが、複数人での協業なのでチームワークが欠かせません。
個人的な思いよりも、いかにチームとして成果を上げるかを考えたいところです。
メンバーとの意思疎通の良し悪しがシステム開発の進捗や精度に関わることもあるので、チームワークは必須といえます。
プログラマーにおすすめの資格
基本情報技術者試験
基本情報技術者試験は、IPA情報処理推進機構が行う情報処理技術者試験で国家資格となっています。
プログラマーを始めITエンジニアが、定量的にその知識を示せる最もメジャーな資格と言えます。
ITパスポート
ITパスポートもIPA情報処理推進機構が行う情報処理技術者試験の一つで、こちらも国家資格です。
ITエンジニアが知っておくべき基本の情報リテラシーやセキュリティ対策の基礎知識が試されます。
PHP技術者認定初級試験
PHP技術者認定初級試験は、一般社団法人PHP技術者認定機構が主催する試験で、WEB系プログラマーに向いている資格です。
初級・上級/準上級・認定ウィザードのレベルがあります。
Ruby技術者認定試験
Ruby技術者認定試験は、非営利団体Ruby Associasionが運営する試験で、WEB系プログラマーに向きの資格となっています。
現在は2つのレベル(Silver・Gold)がありますが、少し先ですがさらに上位レベルのPlatinumが追加される予定とのことです。
Javaプログラミング能力認定試験
Javaプログラミング能力認定試験、サーティファイ認定試験事務局が実施している試験で、Javaの基礎知識・アプリケーション作成能力を試されます。
Javaのスキルを求め企業は多いので、合格しておけば定量的に実力が示せるでしょう。
C言語プログラミング能力認定試験
C言語プログラミング能力認定試験は、サーティファイ認定試験事務局が運営する試験です。
分野によってC言語も一定の需要があるので、この資格でC言語のスキルを証明するのもよいでしょう。
プログラマーのやりがい
PGのやりがい
- 自分のプログラムで人の役に立てる
- 一般と比べて比較的年収が高い
- スキル向上と同時に自己成長
自分のプログラムで人の役に立てる
プログラマーのやりがいとして一番大きのは、人の役に立てる事といわれています。
自分の関わったシステムが世の中で使われていたり、利用者から好評をもらえれば嬉しいものです。
一般と比べて比較的年収が高い
プログラマーの平均年収の項でも解説しましたが、プログラマーは一般よりも年収が高く、これもやりがいとなっています。
プログラミングは「手に職を付ける」現代の職人といえるし、収入への期待も大きいもの。
自信の努力でさらに高スキルの人材となれば、より高年収となる夢も実現できるかもしれません。
スキル向上と同時に自己成長
プログラマーとして仕事を始めると、日々の開発作業で新たな発見や技術を身に付けることができます。
つまり、プログラミングの技量はもちろんですが、プログラミングの周辺知識やユーザーサイドの業務知識も学んだり、多くを自分の知識・経験として得ることができます。
知識量の増加はプログラマーとしての成長を実感できるでしょう。
プログラマーの働き方
プログラマーの働き方は大きく4つがあります。
PGの働き方
- 他社向けの開発作業を自社で行う
- 他の会社に常駐し開発する
- フリーランスとして仕事を受注する
- 自社用の開発作業を自社で行う
①~③については、自らの開発力を他社に買ってもらい(つまりは受注です)、収益とするものです。
④は一般の事業会社の社内システムを開発するイメージです。
いずれも、携わる開発案件や担当プロジェクトの状況によって、業務量が 多い・少ない・普通など、プログラマーの働き方は大きく変動します。
システムの納品前は多忙を極め残業が多かったり、悪ければ予算の都合で残業代が削られるケースもあるかもしれません。
傾向として、自社開発企業の方がホワイトな働き方が多いようなので、そういった企業を目指すのが一番でしょう。
プログラマーのキャリアパス
ITエンジニアになる取っ掛かりとしてプログラマーを目指すのは非常に良い選択です。
なぜなら、プログラマーとして活躍すれば、それに伴ってプログラムの周辺知識・広い範囲のITリテラシーが身に付くからです。
そんな広い知見を身に付けながら、プログラマーのキャリアパスも早い段階から併せて考えておくべきでしょう。
PGのキャリアパス例
- システムエンジニアとなりシステム設計に携わる
- PMとなって、プロジェクトの企画・運営を目指す
- ※PM・・・プロジェクトマネージャー
- IT技術を持ち合わせた営業マン/プリセールスエンジニア
- ずっとプログラマーでいる
未経験でもプログラマーになれるのか?
冒頭でも触れましたが、IT業界の市場規模は拡大を続けていて、人材の不足からプログラマーの求人も増ています。
コロナで不安定な職種に苦しんだ人の中に、未経験・非IT職種からプログラマーになった人も大勢います。
そんな現状から「未経験からでもプログラマーになれる。」と言えるでしょう。
IT業界への足掛かりと考えるなら、例えば 正社員にこだわらずアルバイトから始めて実力を付けてゆくのもアリでしょう。
プログラミングは無料or安価で学べる時代
「IT業界は求人も多いし、スキルは無いけど、IT企業に入り社内教育を受けよう。」
そう考える人もいるかもしれません。
しかし、ライバル達は『自己投資』でスキル取得を進めているので、どちらが選ばれるか結果はわかりますよね?
今の時代、オンラインで無料 or 安価でプログラミングを学ぶことも可能です。
ITエンジニアになるには、自律的に学ばなければチャンスの芽が出ないことも覚えておきましょう。
ハードルが高い独学よりプログラミングスクールが近道
前項で、今の時代はオンラインで無料 or 安価でプログラミングを学ぶことも可能と書きました。
ですが、自分だけで行う学習は「高度な自習スキル」が必要です。
つまり、自己解決力・継続力・忍耐力など、学習に取り組む超ストイックな精神が必要ですが、長い間 能動的な教育を受けてきた普通の人にはなかなか難しいでしょう。
でも、せっかく確保する勉強時間です。
遠まわりをせず、有識者・経験者に教えてもらうのは、最も近道で効率的なやり方であることは明白でしょう。
技術って思っている以上に自分の身や将来を助けるものなんですよね。。
そのためにプログラミングスクールを使うことは、決して無駄な投資ではないことを知っておきましょう。
あわせて読みたい
以上