こんにちは。
この記事を読んでいるあなたは

未経験からプログラマーになろうと思うけど、プログラマーになると辛いのか心配
プログラマーの、具体的な辛いポイントを知りたい
このように悩んでいるのではないでしょうか?
確かに、
なんてブログ記事は、探せばいくらでも見つかるので、そのような悩みを持つのも当然かと思います。
そこでこの記事では、そんな悩みを解決できるような内容をまとめていきます。

・プログラマーの仕事で一般的に辛いことを5つ
・プログラマーになって苦労する可能性のある人の特徴5つ
・それらの「辛い」を乗り越えるための方法
・プログラマーになるための方法
まず、内容に入る前に結論
詳細の説明の前に、この記事の要約です。
この記事では、プログラマーの仕事で辛いポイント、そしてプログラマーになって苦労する可能性のある人の特徴をまとめます。

・1: 周りの人に振り回される
・2: まわりのレベルについていけない
・3: 上流工程のしわ寄せがくる
・4: 仕事量が多い
・5: 不具合や謎のエラーが出たときに、一日以上そのエラーの解決にハマる
そして、こういった「辛い」「苦労する」を乗り越えるための方法もオススメします。します。

・1: 勉強し続ける
・2: 抱え込まず、他の人と協力する
・3: 目の前の仕事に集中しすぎない
・4: 楽観的になる
・5: 楽しむ
・6: 一つの物事をやり抜く力を持っていない人
これ以降で、1つずつ、その背景を説明していきます。
この記事の信頼性
僕は新卒でエンジニアとして就職し、最初の頃はC++のプログラミングをしていました。
そのときは本当に仕事ができず、完全に「ダメ社員」でした。
プログラマーなのに、本当にプログラミングができなかったのです。
その後、プロジェクトマネージャーなどにもなり、いろいろな視点からプログラマーの大変なポイントを見てきました。
また、社会人生活を十数年経験することで、楽しい仕事、楽しくない仕事もわかってきました。
そして、楽しくない仕事をいかに楽しくするか?というような工夫も人並みにはやってきたつもりです。
この記事では、僕自身のこういった経験をギュッと凝縮して、あなたにお届けしたいと思います。
まずは、プログラマーの仕事で一般的に辛いこと説明したいと思います。
プログラマーの仕事で一般的に辛いことを5つ

周りの人に振り回される
エンジニアは、基本的に誰か、サービスやプロダクトを作りたいと思う人の構想を形にする仕事です。
それは、会社や状況によって、クライアントだったり、上司だったり、商品企画担当だったりと変化します。
ただ、彼らはほぼ全くといっていいほど、プログラマーやプログラミングのことを理解していません。
その機能の実現にどのくらいの手間と時間がかかるか?を理解せずに、無邪気にリクエストを出してくるのです。
彼らからすると簡単に見えるような依頼も、プログラマーからすると

今日も遅くまで残業だ・・・
というような要望が来ることがあります。
また、あなたが会社員としてプログラマーをする場合は、あなたの上司もプログラマーであるケースが多いです。
このケースであればこのような問題は起きないと思いきや、上司も、100%あなたの仕事の状況を理解しているわけではないため、ときには自分のできる範囲を超えて、仕事を依頼される可能性があります。
まわりのレベルについていけない
プログラマーは、プログラムが書けてナンボ、という仕事です。
ただ、特に未経験からプログラマーになったときは、自分のスキルが全く足りておらず、周りのレベルについていけないという状況になることがあります。
具体的には、まわりの人のレベルが高すぎて、以下のような感じになります。
・まわりの人の書いたソースコードがわからない
・周りの人に比べ、自分のアウトプット量が非常に低いように感じる
こうなる前に、プログラマーはしっかりと勉強する必要がありますし、さらにプログラマーになってからの勉強も非常に大事になります。
上流工程のしわ寄せがくる

ソフトウェアプロジェクトは、基本的に遅れるものです。
その原因は、例えばこんな感じです。
・クライアントから突然の仕様変更依頼がきた
・社内政治により、急に要件が変わった
・仕様設計の担当者のスキル不足により、後から追加実装が必要なことがわかった
このように、ソフトウェアプロジェクトは、上流工程での検討に時間がかかりすぎたり手戻りが発生することがあります。
結果、プログラマーが作業するまでに、すでに時間がなくなっていることがほとんどです。
そして、締切日をクライアントに約束してしまっていたり、ビジネス的な都合によりリリース日を動かせなかったりするので、結果的にプログラマーが夜遅くまで頑張ることになります。
仕事量が多い
プログラマーの仕事量は、基本的に非常に多いです。
これまで長い間ソフトウェアに携わってきましたが、仕事量が少なくて楽、という人をほぼ見たことがありません。
特にプロジェクトの締め切り直前や、何か突発的な問題が起こったときはその対応のために夜遅くや休日に対応する可能性があります。
一方、新規事業系のサービスの場合は、世の中にすぐに価値提供をしないとプロジェクトが潰れてしまうため、仕事量もかなり多くなりがちです。
不具合や謎のエラーが出たときに、一日以上そのエラーの解決にハマる
これは少しでもプログラムを書いたことがある人には伝わるかと思いますが、
謎のエラーが本当によく出ます。
エラーが出ると、本当によくハマります。
プログラミングをしている時間のうち、半分以上がエラー解決手段を探していると言ってもいいくらい、エラーと闘い続けることになります。
ただ、それが1時間、2時間、時には丸一日かかっても解決できないようなエラーもあります。
エラーが発生して時間が経ってくると、だんだんとイライラしてきてしまいます。
また、エラーと戦っている間はアウトプットは出せていない状態になるので、チームに貢献できていない感じがして焦り始めます。
焦るとさらに頭が回らなくなり、さらに時間がかかる・・・というループに陥ることになります。
以上が、一般的にプログラマーになって辛い言われるポイントです。
ただ、プログラマーが辛いと思うポイントはこういった外的要因だけではなりません。
あなたの考え方や状況によっても、辛いと思う可能性があります。
そこで、続いてはプログラマーになって苦労する可能性のある人の特徴を説明したいと思います。
プログラマーになって辛いと思う人の特徴6つ
スキルがない人

これは当然といえば当然ですが、プログラミングのスキルがないと、非常に辛い思いをします。
プログラミングスキルがないと、プログラマーとして一番大事なプログラミングができないことになります。
なので、プログラマーになる限りは、しっかりと勉強して周りの人についていけるようなスキルを身につける必要があります。
具体的にプログラミングやそれ以外の必要なスキルは以下の記事にまとめてあります。
初心者からプログラマーになるための入門ガイド【具体的なステップで説明】
作っているプロダクトを好きになれない人
プログラマーは仕事中、常にそのプロダクトのことを考えることになります。
自分の作っているプロダクトのことを好きにならないと、だんだんと仕事が辛くなってきます。
人間は、自分の好きなことのために働いている方が楽しいですよね。
プロダクトを好きになることによって、「ほんの少しの工夫」をすることができます。
・ほんの少し、サーバのレスポンスを改善する
・ほんの少し、見やすいソースコードを書く
こういった積み重ねが、結果的に「よいプロダクト」につながります。
そしてその源が、「プロダクトが好き」という気持ちであることが多々あります。
逆に、プロダクトのことを好きでないとこういった「ほんの少しの工夫」をするモチベーションがないため、結果的に楽しくないですし、いいプロダクトづくりをすることもできません。
仕事をやらされでやる人
これはプログラマーに限った話ではないかと思います。
「言われた仕事だけやる」という姿勢では、結果的に仕事が辛くなってきます。
例えば、
・クライアントとの契約に入っていることだけをやる
このような姿勢だと、以下のような問題が起こることがあります。
・契約に入っていなかったことだからやらなかった。結果、クライアントと、もめることになった
プログラマーは何か決まったものを作る仕事ではなく、非常に曖昧な状態の中プロジェクトを進める、クリエイティブな仕事です。
なので、仕事は「やらされている」という姿勢ではなく、「自分から積極的にとりにいく」という意気込みが必要になります。
仕事に楽しみを見出すことができない人

プログラマーの仕事はすでに説明したとおり、辛いことも多いです。
なので、仕事の中に何かしらの楽しみを見出すことができないと、どうしても精神的に辛くなってきます。
どこに楽しみを見出すか?はその人次第ですが、例えばこのようなものがあるでしょう:
・チームメンバーと一緒に働くのが楽しい
・今作っているプロダクトが世の中にいい影響を与えられると考えられるのでワクワクする
何に楽しいと思うか?はあなた次第ですが、「自分が楽しいと思えること」を見出して、それをモチベーションとして仕事をする必要があります。
コミュニケーション能力の低い人
プログラマーに対して、「一人で黙々と作業をする仕事」というイメージを持っているかもしれませんが、実際は、非常に高度なコミュニケーションが求められます。
例えば以下のようなケースで、ハイレベルなコミュニケーションが求められます。
→そうしないと、後から手戻りが発生してしまう可能性があります。
→そうしないと、要求を出してきた人間の想定と違うものを作ってしまう可能性があります。
→そうしないと、最終的にいいプロダクトにすることができません。
→そうしないと、プロジェクトの流れの変化に気づかず、無駄なことをやっていた・・・という事故が発生します。
→そうしないと、不具合を埋め込んでしまうリスクがあるばかりか、チーム全体のパフォーマンスを落としてしまう可能性があります。
プログラマーは一人でできる作業、というのはある側面では正しいですが、実際は他の人と頻繁にコミュニケーションをとる必要がある仕事なのです。
一つの物事をやり抜く力を持っていない人

プログラマーは(他の仕事でも一緒ではありますが)、辛いときに踏ん張る力が必要です。
開発の締め切りが近づいていたり、何か問題が起きたときには、ときには毎日夜遅くまで働く必要があることもあります。
体力的にも辛いし、精神的にも結構追い詰められていることもあります。
そんな状況であっても、目の前の仕事から逃げ出さずにしっかりとやり抜く力が必須です。
また、プログラマーは1つの不具合に1日以上ハマることも多い。
あまりにも難しい不具合に心が折れそうになることもあるが、それでも諦めない力が必要です。
仮に一つの物事をやり抜く力を持っていないと、途中で諦めてしまう可能性が高くなってしまいます。
以上がプログラマーになって苦労する可能性がある人の特徴です。
ここまで、「プログラマーが大変だ」というようなポイントばかりを列挙してきましたが、ここからはこういった「辛い」ポイントの具体的な乗り越え方に関して説明します。
あなたがプログラマーになって「辛い」と感じたときの対処方法の1つとして知っておいていただけると幸いです。
プログラマーが感じる「辛い」を乗り越えるための方法5つ
プログラミングの勉強をし続ける
すでに説明したポイントではあるものの、改めてプログラマーには勉強し続けることが大事。
最新の技術やトレンドについていけないと、どうしても価値を生み出しづらい職業。
プログラミングを書かないとしても、IT系のウェブサイトを読んで最新の技術トレンドを知っておいたり、新しいプロダクトを触ってみたりする工夫が重要になります。
仕事を抱え込まず、チームメンバーと協力する
仕事はチームプレーです。
自分が分からなかったり、タスクの量が溢れていたら他の人に依頼するという姿勢を持つ必要があります。
スクラムで開発しているチームであれば、「手が空いた人からタスクをとっていく」というやり方になるので、あまり問題にはならないかもしれません。
また、毎朝15分くらいのミーティングを実施して、「昨日何をやったか」「今日何をするか」「困っていることは何か?」をそれぞれ言っていくので、もしあなたがハマっていたとしてもスクラムマスターがそれに気づいてくれる可能性が高いです。
ただ、上司から「この作業やっておいて」というように振られるチームや組織の場合、

自分がそのタスクを何とかしないと!
と思い、抱え込んでしまうケースがあるのではないかと思います。
なので、もしやってみて無理そうだ、と思ったら他の人の協力を求めるのは非常に重要です。
仮にあなたがそのタスクにハマってしまい、期待するパフォーマンスの半分しか出せなかった場合、そのタスクは他の人がこなすか、スケジュールを遅らせる必要があります。
特に小規模人数で開発をしている場合は一人あたりのアウトプット量が非常に重要なため、ハマりそうであればすぐに他の人に相談するという姿勢が重要です。
目の前のプログラミングに集中しすぎない

プログラマーはその仕事柄、特に目の前の詳細に集中しがちです。
結果的に、周囲が見えなくなってしまい、全体最適ができないことがあります。
具体的には、
といったことは本当によく起こります。
なので、目の前のタスクに集中しすぎることなく、今自分が携わっているプロダクトの以下のようなものをしっかりと念頭において仕事をするべきです。

・ビジネスの状況はどうなっているのか?
・開発ロードマップがどうなっているのか?
・最終的に何を達成したいのか?
こういったものを念頭に置いて仕事をすることで、ふとした瞬間に冷静に、全体像から個別の判断をすることができるようになります。
また、あなた自身のキャリアとしても、目の前の作業に集中しすぎると、
・自分がプログラマーとしてどうなりたいのか?どんなことをしたいのか?を忘れる。
こういったポイントは忘れがちになります。
なので、時間のあるときはこういった自分が目指している姿を改めて考えたりすることをオススメします。
プログラミング中に何か問題があっても、楽観的に考える
プログラマーをやっていると、作業中に不具合を生み出したり、何か問題を引き起こすこともあるかと思います。
もし何か致命的な不具合や問題があっあ場合は、他の人にも協力してもらってその解決にあたることになります。
特にプログラマーは「自分が書いたソースコード」が明確なので、自分が起こした不具合に対して、

自分のせいで・・・やってしまった・・・
というように、責任を感じがちです。
特に真面目な人は、それで心を病んでしまうことがあるので、
「別にこの職場がダメでも次の職場にいけばいいや」
くらいの軽い気持ちでいることをオススメします。
プログラマーとして仕事をする上で、どこかで何かしらの問題を起こしてしまう可能性は高いです。
もし問題を起こしてしまったときは、少し、気楽に考えることをオススメします。
特にこの記事を読んでいるあなたは、性格が非常に真面目だと想像されるので、抱え込まないように、「適度なテキトウさ」は重要です。
プログラミングを楽しむ

最後にして一番大事なのが、「プログラミングを楽しむ」ことです。
プログラミングは特別な道具などがなくても価値をゼロから作り出すことができるクリエイティブな作業です。
プログラミングは本来、新しいものを作り上げる、楽しい作業のはずです。
実際に現場で働いていて、プロジェクトが佳境に入ってくると、どうしても精神的余裕がなくなってきます。
不具合に悩まされることも、時間がなくてイライラすることも1回や2回ではないでしょう。
ただ、そんなときこそ、余裕をもってその場を楽しむ精神は重要だと思います。
プログラマーの辛さを乗り越えた先にあるもの、それは「多くのメリット」
ちなみに、プログラマーは辛いばかりではありません。
今、IT人材が不足しているので市場価値も高いです。
手に職がつくので、一度プログラマーとして独り立ちすることができれば、そこから先はどのようなところでもやっていくことができます。
「辛い」の先には、数多くのメリットが待っています。
このあたりの話は、以下の記事にまとめているので、

プログラマーになると辛いことばっかり・・・?
このように思ってしまったあなたは、是非この記事も読んでみていただければと思います。
プログラマーになるための方法
それでは最後に、そんなプログラマーにはどうやったらなれるのか?を紹介したいと思います。
このブログでは、すでにたくさんのプログラミングの勉強の方法などを紹介しているので、ここでは2つだけ、ピックアップして紹介したいと思います。
プログラミングの始め方がわからない、というあなたへ
プログラミングってどうやって始めたらいいの?
と思っているあなたには、以下の記事をオススメします。
目標の設定方法や必要な環境に関して紹介しています。
【完全初心者からの】プログラミングの始め方【挫折せずに続ける手順】

1: プログラミングの目標を設定する
2: プログラミングに関して知る
3: プログラミングに必要な環境やプログラミング言語に関して知る
4: プログラミングの勉強方法に関して知る
5: 実践する
1つ目の記事では、最初にやるプログラミング言語としてJavaScriptをオススメしています。
一方、その他のオススメのプログラミング言語をランキング形式で紹介した記事が以下です。
初心者におすすめのプログラム言語【いろいろな観点踏まえてTop3発表】

・1位: JavaScript
・2位: JavaとGo
・3位: Python
まとめ
それではこの記事のまとめです。

・1: 周りの人に振り回される
・2: まわりのレベルについていけない
・3: 上流工程のしわ寄せがくる
・4: 仕事量が多い
・5: 不具合や謎のエラーが出たときに、一日以上そのエラーの解決にハマる

・1: スキルがない人
・2: 作っているプロダクトを好きになれない人
・3: 仕事をやらされでやる人
・4: 仕事に楽しみを見出すことができない人
・5: コミュニケーション能力の低い人
・6: 一つの物事をやり抜く力を持っていない人
さらに、そういった「辛い」を乗り越えるための方法は、以下の方法をとることをオススメします。

・1: 勉強し続ける
・2: 抱え込まず、他の人と協力する
・3: 目の前の仕事に集中しすぎない
・4: 楽観的になる
・5: 楽しむ
この記事を読んだあなたが、プログラマーのリアルな辛さを理解した上で、引き続きプログラマーを目指した勉強を、楽しみつつ続けていただければと思います。
この記事は以上です。
ここまで読んでくださり、ありがとうございました!
コメント