エンジニア職の中でもプログラマーという働き方については「3K」「帰れない」などキツイのでやめとけという意見はネットでも多く目にします。
本当に巷で言われているようにプログラマーという職業はキツくて苦労の多いだけの仕事なのでしょうか?
「プログラマーとして前向きに仕事をするためのチェックポイント」はあるのか、プログラマーの魅力についてなどプログラマー経験者の筆者が様々な角度から検証してまいります。
自分のプログラマー人生、その先にあるITエンジニアとしての働き方について最適な方法を模索していきましょう。
Contents
プログラマーとは?
プログラマーとは、システム開発の現場においてプロジェクトマネージャーやシステムエンジニアなどの上級エンジニアたちが作成した設計書をもとに、実際にプログラム言語を用いてコード化し、コーディングしたプログラムが正常に期待通りの働きをするか検証するためのテストを行い、必要があればデバッグを行う職責があります。
プログラマと一言にいっても、帰属する企業のスタンスによって、SES、SIer、社内開発と3つの業務形態があり、またフリーランスとして活躍するケースもあります。
なかでも「きついからやめとけ」といわれやすいSESについて続けて解説いたします。
プログラマーの働き方の一つ「SES」とは
SESは「System Engineering Service」の略で、プログラマーとして業務遂行する場合の働き方の1つなのですが、その中でも「客先に常駐して自社の責任者のもと業務を遂行する」というものを指しています。
やめとけと言れる理由をピックアップするとこのようなことから言われています。
- 年収が低い、年収アップがしにくい
- 客先常駐のため指揮命令系統がはっきりしていないことも多い
- 勤務地が案件ごとに変わることがストレス
- 自社に対しての帰属意識が弱くなる
- 残業時間が調整できない
- スキルアップにつながりにくい
- 革新的な技術力習得にはつながりにくい
ただしSESは成果物でなく労働力を提供する目的で契約締結するためメリットといえる特徴もあります。
- 契約期間が長いことも多いので収入(給料)が安定しやすい
- 案件ごとに異なる環境で仕事でき気分も変えられる
- 大手企業で仕事をすることができる
- 大規模システム開発の経験が積みやすい
- 自分の能力・スキル以上のことを要求されにくい
このことからも、デメリットばかりではなく、メリットもあることがうかがえます。大切なのは、業務の本質を理解し自分自身のスキルセットや、経験から適正があるのか、メリットが有るのかを見極めることです。
プログラマーの種類
プログラマーには大きくわけて以下の4つの種類があり、それぞれに求められる開発言語スキルが異なります。
またどれも同じですが基本的に1つのプログラム言語スキルだけで業務が遂行できることは極めて少ないことも覚えておくと良いでしょう。
受託開発であれば顧客の指定やトレンド、SESであれば常駐先が使用している言語など、働き方によっても使用するプログラム言語は多様です。
- webアプリケーションプログラマー
- スマホアプリプログラマー
- ゲームプログラマー
- 組み込み系プログラマー
- 基幹システムプログラマー
webアプリケーションプログラマー
WEBアプリケーショ系プログラマーの業務を簡単に解説すると、画面表示部分を作り込むHTML・CSSなどの技術とあわせ、処理部分を担うPHPやPython、Java、Javascriptなど、そしてデータベースを操作するためのSQLと3~5の言語スキルが求められます。
近年では目に見えないバックエンド側のシステム及びAPIなどを開発するサーバサイドエンジニア、目に見えるwebページを中心として開発をするフロントサイドエンジニアと役割によって種別が分かれることが増えてきています。
基本的にはwebブラウザを介するアプリケーションを開発するプログラマーのことを指します。
スマホアプリプログラマー
スマホアプリ系のプログラマーは、iPhoneなどのiOSやAndoroidOS上で動作するアプリケーションを開発するプログラマーで、iOSであればSwift、Androidであればkotlinといったようプログラム言語を用いてネイディブアプリを開発します。
ただし、サーバサイドのシステムが必要な場合も多く、サーバサイドはJavaやPHPなどwebアプリケーション系のプラグラム言語で開発されることが多いようです。
ネイティブスマホアプリケーションとはAPIなどを介してデータなどの受け渡しをします。
ゲームプログラマー
特に専門性が求められるのは近年VR技術なども用いられているグラフィックやBGMなどの操作も必要なゲームプログラマーといってもよいでしょう。
使用するプログラム言語はC系(C、C++、 C#)が多く、UnityやUnreal Engineなどのゲームエンジンのスキルを求められることも多いようです。
これからエンジニアを目指す方が将来的にゲーム制作に携わりたいという目標の方も非常に多いようです。
しかし、注意が必要なのは、ゲームプログラマーが他種別のプログラマーに転職するのは難しいかもしれません。
ゲームと他種別は共通点が少なく、業務経験としては全く異なった経験と見られてしまうからです。
そのため、webアプリケーションプログラマーとして経験を積んだからゲームプログラマーへの転職がしやすいだろうとか、その逆は異業種からの転職と見られてしまう可能性が高いので注意しましょう。
組み込み系プログラマー
組み込み系というのは電子機器などの制御部分をプログラムするもので、以前はメーカーが主導して多くのエンジニアが組込系のプログラムに携わっていましたが、現在では制御部分のプログラムは提供されることことも増え、組み込み系のエンジニアは激減しました。
昨今、Iotのように機器・機械、家電などに組み込まれたシステムのことを指しますが、組み込み系のエンジニアが活躍できる場として、改めて注目されているのがIot市場です。
Iot市場は今後、ますます拡大することから組み込み系というカテゴリーではなく、Iotエンジニアとしての需要は増えていくものと見られていまう。
基幹システムプログラマー
基幹システム系というのは大手企業、銀行や官公庁など大量のデータなどを取り扱う業務で動く企業の基幹となるような業務をシステムで管理する総称をいいます。
基幹システムという決まった枠組みやパッケージがあるわけではなく、基幹システムというカテゴリーの中に販売管理システムや購買管理システム、在庫管理システム、会計システム、人事給与システムなどが含まれています。
現在では大規模向けのパッケージを組み合わせたりしてフルスクラッチ(ゼロから開発)することは減ってきていますが、大規模向けパッケージは専用の言語を用意していたりするため、基幹システムプログラマーとひとくくりにしてしまうと、転職された際など困ってしまう事態になるかもしれません。
基幹システムプログラマーとして転職を考える場合は、求人上場の使用言語や必要な経験などを確認し、自分の経験が活かせるのかをチェックしましょう。
プログラマーは未経験でも目指せるのか
よく未経験からプログラマーへの転職というようなタイトルの記事を目にすることがありますが、全くの未経験からプログラマーを目指すことは可能なのでしょうか。
未経験からプログラマーへの転職は、決して不可能なことではありません。一方で、未経験者は独自にプログラミングなどのスキルを習得し、ポートフォリオを作成するなどによって、未経験であることをカバーできるよう準備を進めることが大切です。
ただし、全く自己学習もせずにスクールなどにも通わずに予備知識ゼロでプログラマーになるのは、非常に厳しいと言わざるを得ません。もし、プログラマーとして採用してくれる企業があった場合でも、入社後に短期間でプログラミングの基礎から学習をすることはかなりのスポードで理解しなくてはいけないことになり、かなりの労力がひつようとなります。
そのため、実務経験は未経験であっても、プログラミング言語はしっかりと習得しておくことが転職を成功するための重要なポイントです。
プログラマーはきついといわれる理由
プログラマーは本当にきついのかということを調べていくと「離職率80%」(参考:プログラマーの仕事がきついと言われる理由8つ|きついと言われる原因)というデータもありますし、筆者の経験からも決して楽な仕事ではないということをお伝えしておくほうが良いかと考えています。
ただし先にお伝えしておくと、働く環境によってはプログラミングが好きだという方にとってやりがいもあり楽しさ、達成感を日常的に感じられる仕事であるということも付け加えさせていただきます。
また、離職率が高いイコール働く環境に問題があるというのも短絡的です。
離職率が高い理由の1つには需要も高く、取得した技術を応用できる環境がお多いプログラマーという職種が転職しやすい環境にあること、プログラマが年収アップを考えると転職が一番の近道であることなどから、流動性の高い職種であることがわかります。
筆者も転職は数回したことがありますが、年収アップしたかった転職、スキルアップしたかった転職など、目的があって転職をしてきました。
自分のキャリアパスを考えるとプログラマーは転職することがキャリアパスを実現する手段の1つなのです。
一般的にプログラマーの仕事がきついといわれる理由をピックアップしてみたのでチェックしていきましょう。
- 残業が多い
- 常に人手不足
- 給料が上がらない
- 客先常駐がある
- 仕様変更が差し込まれる
- テストもやらなくてはいけない
- 柔軟性を求められる
- コミュニケーション力も必要とされる
- 業務範囲が曖昧な事が多い
- 納品して終わりではない
- 継続して勉強していかなくてはならない
これらをみて、プログラマー経験者としてお伝えするなら、テストをせずに期待通りのプログラムを作成することは難しいですからテスト工程まで対応することは当然かなという気がします。
ただ、テストは正常系といわれる操作の流れの中の正常な動作をしているかのテストの他にも、異常系と言われる特殊な条件下に発生するようなケースのテストも行います。
中には「こんな条件意地悪すぎて実際にはないだろう!」と思うようなものもテストケースとして挙げていきますから、そこに不毛さを感じる方もいるかもしれません。
ですが実際本稼働させてみるとそうした正常ではないデータが時折混じってくることもあり、そこで本番機がストップしてしまうようでは企業から機会損失だと問題になっても仕方ないことだと思います。
「自分の作ったものに職人意識をもって向かい合う」ことが苦手な人にはプログラマーは向かないでしょう。ITエンジニアとして働きたいと考えているのであれば、プログラマー以外の職種で適職がないか模索することをおすすめします。
仕様変更は頻繁ではありませんが当たり前のように発生します。これはSEとして働いていても同じです。
担当しているSEによっては、仕様変更を都度受け入れてしまい、スケジュールやコストを考慮していないというケースも多く耳にします。そのしわ寄せはプログラマーに来ますので、理不尽な仕事が増えるという負のスパイラルが続くのです。
そのためシステムエンジニアやプログラマーにはケースバイケースで状況を把握し、追加で工数を確保する必要があるか、スケジュールの見直しが必要になるかなど、切り替えて考えることも求められます。
そして筆者が一番重要だと感じたのは「コミュニケーション能力」です。
仕様書から読み取り、また資料から汲み取れないことはヒアリングしたり打合せの中で出てきたワードの中から必要な動きを考え、仕様書に記載されていることだけで事足りるのか判断する、ということもプログラマーのスキルとして重要です。
ここで申し上げたコミュニケーション能力は、「誰とでも話題を提供し明るく話す」といった能力ではありませんので注意してください。
聞き取る(読み取る)能力、そして日本人が得意だといわれる察する能力と併せて、適任者に確認しネゴをとり実行する、ここまでがプログラマーとして持っておくと仕事がスムーズに進むスキルです。
仕様を完璧に捉えている設計書はないものだとして考えるといいのかもしれません。
プログラマーがきつい状況になるその原因とは
プログラマーの仕事はきついといわれる理由につづいて、そうなってしまう原因についてもみていきましょう。
<請負開発・契約の流れで生じる問題>
- 納期・スケジュールがスタート前に決まっている
- 金額・工数も仕様確定前に決定している
- 不具合や障害の工数は見積もれない(含まれていない)
- リリースしてからも時間が取られる構造
- 不具合、障害の対応は即時対応が必須
仕事をするうえで納期はつきものですがプログラマーが働くシステム開発の現場においては、実際には作り込んでいく過程でこそ様々な問題点も浮き彫りになることも多々あります。しかし、システムの全貌が見えない段階で納期(スケジュール)が決まっていることが問題に直結してしまっているといえます。
納期だけでなく、予算もこの段階で決まっていますから仕様変更などを差し込まれると、無理のある工数・人員で回さなくてはいけなくなるケースもあります。
こうなると炎上必須で残業なんて当たり前、やることはたっぷりあるのに結果的に単価が安いという状況になるワケです。
もちろん最初は潤沢と思われた納期・予算でスタートしたものの、クライアントも把握しきれていなかった予想外の状況をクリアしなければならず状況悪化するケースもあります。
障害が発生するようなことがあれば中には即時対応が必要な場合もあり、その場合は夜中でも招集がかかるということも。
これには全員に声がかかるものではなくプログラマーに声がかかることも少ないですが、自分が作り込んだプログラムであれば招集がかかることも十分あり得ます。
いつ連絡があるかわからないというストレスは大きく、リリースされた後もしばらくは安心できない状態になってしまいます。
<社内環境と業務上の体質により生じる問題>
- 自分だけ早く帰りづらい雰囲気
- 障害・不具合対応で突発的な残業・夜間/休日出勤がある
- 常にエンジニアが不足している
現場の雰囲気にもよりますが、何かトラブルが起こると「さあ大変だ!みんなで解決しよう!」という空気が当たり前になっている現場もあります。
担当しているタスクが予定通り進行していたとしても、順調ならと、別のタスクを追加で渡されたり、トラブルが起きているところにサポートで入れられたりと、理不尽な状況になりがちなん現場もまだまだあるのです。
すべてがそういった現場ではありませんが、規模が小さい開発現場などではこういうことがおこりがちです。
大概の現場では上級エンジニア(リーダーやSE)が問題の部分を探り当て、実際のデバッグはプログラムを製造したエンジニアに振るのが流れです。
また、自分の作業が終わっていても周りが忙しく残業している中で「帰りにくさ」を感じることもあります。
もちろん自分の作業が終わっている以上、帰ることに後ろめたさを感じる必要はないわけですがどうしても気になってしまう場合には周りへの配慮をみせつつ帰る、などのコミュニケーションがあればスムーズにいくかもしれません。
特に残業が多いといわれるこの業界、働き方改革がうたわれ早く帰りやすい空気が流れてきてはいるもののこのような難しさがどうしてもいやだという方もいます。
また、残業に関しては新型コロナウィルスの影響によりリモートワークに切り替えた企業などでは、遅延している人のタスクを押し付けれるようなことも軽減し、余計なコミュニケーションもなくなったので、快適な環境になったというプログラマも多いようです。
プログラマーという職種の魅力とメリット
ここまでプログラマーがきつい、SESはやめておけなど後ろ向きな情報を主に取り上げてきました。
ですが筆者の経験からもプログラマーという仕事には魅力もメリットもある、ということをお伝えしたいと思います。
どのような魅力・メリットがあるのかピックアップしました。
- 達成感が味わえる
- 活躍できる選択肢(言語や専門性)が多い
- 案件はいくらでもある
- 収入UPする方法も様々ある(スキルアップや転職など)
- 将来性のある産業に関わることできる
システム開発の現場でいくつものプログラムを作り上げテストをクリアしていくプログラマーならではのメリットとして、日々達成感を味わえることはぜひお伝えしておきたいポイントです。
簡素に言えば、プラモデルを毎日組み上げ完成したらチェックするようなことを繰り返すのがプログラマーともいえます。求められるアウトプットが明確になっているので、それをどうプログラミングするか、試行錯誤して完成したら動作テストをして問題がなければ完了となり、達成感を得られる、それを繰り返すというのが魅力でもあります。
SEになると仕様書を作り上げ、成果物として挙がってくるテスト結果を見て判断するなどが主な業務となるため、プログラマーほど日常的に達成感を味わえる機会はありません。
そしてあなたが思い描くビジョン(キャリアパス)によって、様々な広がりがあるのもプログラマという職種の魅力です。
AI技術にかかわりたい、基幹システムを作ってみたい、など必要に応じたスキルアップをしやすいのも日常的に言語に触れるプログラマーだからこそ。
さらに専門的な分野に進むもよし、汎用性のあるエンジニアとしての未来を目指すもよしなのです。
収入を目的とするならば、それにみあったスキルを身に着け経験を重ねていくことで年収UPも確実にできます。そもそもプログラマーはスキルがあれば、平均年収も高くなりますし、安定した給与が見込める、技術職です。
ただしあなた自身の目的に沿って働きやすい、きつすぎない職場に身を置くためには会社選びのコツを抑えておくことは必須です。
続けて「会社選びのコツ」について解説しますのでお目通しください。
プログラマー転職できつい会社を選ばないための5つのポイント
- 業種・スタンス・業務内容をしっかり確認
- 求人内容は細かくチェック
- 定着率をチェック
- 実際に働いている人の声や口コミをチェック
- 面接時に職場環境をチェック
1.に関して特に見ておくべきなのは業種でSIer・SES・自社開発どれにあたるのか、また一次請けなのか二次受けなのかについてもチェックしましょう。
前述のように”やめとけ”といわれるSESも、「自分にとっては働きやすい」と感じられるのかどうかで判断すべきです。
働き方として自分にあっているのか確認するためにもしっかりチェックするようにしましょう。
自分に合っている、また自分の目指す将来像がかなえられるかどうか、これをしっかり見極めることこそ、「きつくないプログラマー」として働くための秘訣です。
2.については残業時間や休日出勤の頻度、有休の取得状況についてしっかりチェックしていきます。
ここでチェックした内容でハッキリしないのであれば面談のアポイントを取る際、もしくは面談でクリアにするようにしましょう。
「思っていたのと違う!」となってしまわないためでもありますし、有休消化率などは求人上の話だけではないことを確認することに意義があります。
正直な話、休日出勤や残業が全くない仕事ではありませんが、その頻度があなたにとっての許容範囲なのかどうかをしっかり判断しておくことは必要です。
特に納品前の状況については詳しく確認されることをおすすめします。
3.、4.についても面談前にしっかりチェックをすることをおすすめします。
特に実際の声や口コミはネット上では必ずしも信頼できる情報ではない可能性も考えられますが、綿密にチェックすることで信ぴょう性の高い情報を集めることは可能です。
5.の離職率が高いかどうかは「働きやすい職場か」の指標にもなりますから必ずチェックしましょう。もし、高い離職率だった場合には、その理由を面接の際に確認されることをおすすめします。
プログラマーについてよくある質問Q&A
続いてプログラマーについてよくある質問をQ&A形式でまとめます。
【Q1】プログラマーは文系には向いていない?
A1. 向いていないことはありません。実際に文系出身のプログラマー・ITエンジニアはたくさんいます。ただしプログラミングの基礎知識・アルゴリズムの理解・前向きにプログラミングスキルを学ぶ意識がないと厳しく辛い道のりが待っています。
もし文系で全くの未経験でプログラマーとして就職する場合は、入社後の研修内容が未経験に向けたものかをチェックしておくことが大切です。
【Q2】未経験でプログラマーになるのは大変?
A2. まったく経験がなく知識もない状態で現場に入ってしまうと、いくら未経験とは言え求められるものはある程度の水準以上ですから厳しいです。
経験がない分、現場に見合うだけのスキル・知識だけは補っておくのが良いでしょう。
プログラマー・SEとして働くうえでは学校で学んだ技術は役に立たず、実際に現場で習得できるスキルが重要だと多くのエンジニアが答えます。
ですからある程度の知識をもって現場で学ぶ意欲があれば、未経験でもプログラマーとして成長していくことは可能です。
【Q3】AIの発展でプログラマーは必要なくなる?
A3. 正直なところ、確実にプログラマーという職種が将来の日本でも必要とされるか否かはお答えできません。
すでにプログラムの自動化については、一部実現しているというニュースが数多く流れています。これまでに構築してきたシステムのパーツを組み合わせるなどの技術はAIを介して今後も進化していくでしょうから、プログラミングの一部がAIによって記述されることは間違いないと思います。
AIが普及し、現在プログラマーがおこなっている作業をAIがおこなえるまでに進化してしまえば、プログラマーという職種はなくなるのかもしれません。
それがいつのことになるのか、今はまだある程度のソース化はできても確実に詳細な部分までAIで作り込める時代ではありませんが、5年先なのか10年先なのか、いつの時期に実現するのかわかりません。
1つ断言できるのはプログラマーという職種が必要なくなったとしてもSEやPMの仕事は無くならず、SEとして働くうえで、プログラマーとしての知識や経験は不可欠だということです。
プログラマーとして一生働くという人は少ないでしょうから、来るときのために知識やスキルを有しておくべきであるということは言えます。
プログラマーに向いている人の特徴
ここまでのお話も加味して、プログラマーに向いているのはどういう人物かまとめてみます。
- コミュニケーション能力がある
- 柔軟かつ論理的な思考ができる
- 新しい情報にふれることが苦ではない
- チームでの仕事が好きな人
よく勘違いされているなと感じるのは「IT業界は人との連携は必要ない」と考えられているということ。
実際に仕事をするとわかりますが、IT業界はいってしまえば「大きなものをみんなで作り上げる」作業を行うのが常ですから、一匹狼ではやりきれません。
上でもお話ししたように、読み解く力でだけでなく聞き取る力、そして人と対話する力ももとめられる職種です。
また考え方としては1つの考えに凝り固まってしまうとデバッグも進まず、新しい技術も身に着けられないため、プログラマーとしてスキルアップするのは難しくなります。
よりニーズのあるプログラマー、ITエンジニアとして成長していくためにニーズのある言語を身に着けることも求められます。
プログラマーとして働くことの魅力もすでにお伝えしましたが、ご自身が向いているのかの判断基準として検討してみてください。
プログラマーに向いていると思ったらお仕事探しを始めよう
ここでも取り上げたように魅力はあっても「残業が多い」「収入が低い」などもあってストレスが多いきつい職種だといわれるプログラマー。
今は新型コロナウイルスの影響や、働き方改革法の施行もあってテレワークが標準化され働き方そのものの考え方が変わりつつあります。
特にテレワーク率が高いといわれるIT業界で、案件によっては客先常駐が続いているケースもありますが、残業などの働きやすさにかかわる条件が見直され、改善されつつある部分もあります。
ただしこの働き方の変容により『作業の進みが遅い分残業で補っていた』、『効率よく進められないから残業していた』という人にとってはより厳しい状況になることもあります。
IT業界に身を置くエンジニアとして働くというキャリアプランの中で、プログラマーに固執するが故辛い思いをする、というのであればあなたに合った働き方を見つめなおすのもよいでしょう。
プログラマーとしての知識と経験はIT業界において基本の技術、重要なものではありますが、専門的な職種を目指すうえではそうとは限らないこともあります。
またご自身に合わない企業に帰属してしまったが故に、きついと感じているというようなことを避けるためにも、会社選びのコツについても今一度チェックしてみてください。
企業を研究すること、自分自身のスキルセットや経験を把握することを正しくできれば、働きやすい環境を手に入れる可能性も高まります。身につけた経験やスキルが将来に活かしやすい職種でもあるプログラマーでものづくりがパソコンでできるという魅力を存分に楽しんで頂ければと思います。
皆さんがIT業界においてより気持ちよく前向きにお仕事をする、そのための情報となれば幸いです。