本記事では、以下の内容を記載しています。
- プログラミングはやめとけと言われる主な理由
- プログラミングを始めるメリット
- プログラミングに向いてる人と向いていない人の特徴
次章から詳細に解説していきます。
プログラミングはやめとけと言われる主な理由
これからプログラミングを始めようと考えている人は、一度耳にしたことがあるかもしれません。
プログラミングはやめとけと言われる理由として、以下の内容があります。
- 学習方法が膨大で一つに定められない
- 技術の進歩が速く学習体系が分かりづらい
- プログラミング課題の解決方法が一つとは限らない
- 学習内容や課題解決における情報収集時間が膨大になる
上記の理由はそれぞれどのような経緯で「やめとけ」に至るのか解説します。
学習方法が膨大で一つに定められない
まず一つ目に挙げれるのが「学習方法の膨大さ」になります。
学習方法を挙げるだけでも、無料学習サイト・学習本・プログラミングスクールなどです。
また、各サービスによって何を学習のスタートにするかは定まっておらず、学校のように取り決められた勉強方法が当てはまりません。
後述でプログラミングを始めるメリットに関わりますが、一般的に考えれば計画なしに学習を始めると何を学ぶべきか判断できなくなります。
学習方法の膨大さから、「なんとなく始めるならやめとけ」と言われる理由になります。
技術の進歩が速く学習体系が分かりづらい
次に、「技術進歩により学習体系が分かりづらい」といった点が挙げられます。
例えば、プログラミング言語一つとっても、学習体系が変化しやすいです。
プログラミング言語もバージョンアップによって数ヶ月から1年で変化し、学習内容が少しづつ増えていきます。
このようなアップデートによる機能拡張が様々なツールで発生し、学習の体系化が困難になります。
プログラミング課題の解決方法が一つとは限らない
プログラミング学習を実施すると、必ず未知の課題にぶつかります。
情報収集から課題の解決方法を探りますが、確認すると技術記事によって解決方法が変化します。
当然、特定の機能を持ったコード記述は変化しませんが、コードが複雑化した関数やクラスの処理に至ると一意に一つに絞られた解決方法になりません。
「なぜこのコードが記述されるのか?」「そもそもこのライブラリはなんなのか?」といった混乱を招く可能性があります。
学習内容や課題解決における情報収集時間が膨大になる
結局のところ、「情報収集の時間が疑問の連鎖で膨大になる」といった難点があります。
残念ながら、どこかに解決方法が明快に存在するかどうかも分からないし、そもそも検索の”当たり”を付けるのも初学者にとっては難しいです。
さらに、特定のコードに関する疑問を払拭するために情報を見つけても、見つけた情報の中でさらに不明なワードや技術が潜んでいることもあります。
どこまで深堀りすればよいかわからず、膨大な情報量に気圧されて挫折することもしばしばです。
プログラミングを始めるメリット
上述した通り、プログラミングをやめる主な理由を解説しましたが、当然ながらプログラミングに取り組むべきメリットも存在します。
以下がプログラミングを始めるメリットです。
- エンジニアは高収入を狙える職種
- エンジニアは他職種に比べて働く環境を変えやすい
- スキルがあればIT案件は膨大な量がある
PC一台で上記の3つを叶えられる職種は、エンジニア以外で数えられるほどだと思います。
エンジニアは高収入を狙える職種
IT業界における市場は、年々増加しています。
また、昨今のAI技術や仮想通貨など、技術に対する注目度が高いです。
つまり、人間が生活する上で「効率化」「自動化」「代替」など、様々なDX化が可能な技術がプログラミングになります。
そのプログラミングに卓越した職種がエンジニアであるため、市場の需要に応えられれば必然的に高収入になります。
エンジニアは他職種に比べて働く環境を変えやすい
エンジニアは他に類を見ないほど、PC一台で働く環境を変えられます。
想像に難くないと思いますが、本来インターネットさえあれば成立する職種であるため、働き方に自由度が生まれます。
- フル出社勤務
- 一部リモート勤務(一部在宅)
- フルリモート勤務(完全在宅)
- 週1~5勤務(フレックスやフルフレックス含む)
また、会社の正規雇用に限らず、業務委託であるフリーランスエンジニアですら年収1,000万円を達成できるほどです。
さらに、エンジニア出身で独立起業を成功した人もいるため、取り組み方次第で働く環境に制限をかけない方法を選択できます。
スキルがあればIT案件は膨大な量がある
特にフリーランスエンジニアで数年実績を積み上げた人であれば、仕事は「選ばれるものではなく選ぶもの」と感じる部分もあるはずです。
実際に筆者もWantedlyを始め、レバテックフリーランスなど様々なフリーランスエンジニア向け案件紹介サービスに登録していますが、実績プロフィールやスキルシートを展開するだけで連絡が途絶えません。
また、SES案件・直接案件といった企業による直接オファーからSES営業まで幅広いです。
X(旧Twitter)といったSNSも利用することでつながりも増えるため、案件探しは一定の実績があれば困ることはありません。
プログラミングに向いてる人の特徴
プログラミングに向いてる人は、やはりいくつかの共通点があります。
実際に、周りのエンジニアから話を伺っても、以下の特徴が見受けられます。
- 指示待ち人間ではない
- 根気よく課題に取り組める
- プログラミングで実現可能か考え続けられる
指示待ち人間ではない
自身の意思で行動することができる、あるいは人から何かを言われなくても動ける人はプログラミングを習得が可能です。
指示がなければ動けない人はプログラミングを学習してもコードを覚えるだけで、新しい知識を調べたり、エラーを分析し対処する能力を身に付けることは出来ません。
また、もしあなたがプログラミングのスキルを身に付けたあと、今後そのスキルで仕事をしていきたいと考えているのなら、指示をされて行動するのではなく、自ら考え、不明瞭・不明点を調べ、製品やサービスを実装していくことになります。
案件受注においても、お客様の要望に沿ったプログラム構成は自身で組み立てる必要があるため同様です。
そのため、プログラミングを学ぶだけでなく、仕事をこなしていく上で自ら行動を起こす能力が必要です。
根気よく課題に取り組める
思い通りに事が進まないのがプログラミングです。
あなたが「諦めが悪い」「辞めることが苦痛」であれば、プログラミング習得は可能です。
プログラミングには常にトライ&エラーがつきものです。
何も問題なく、最後まで完成することはほぼありません。
全然思うようにいかなくても問題が解決するまでやり続ける根気強さが必要です。
そのため、どの媒体で使用してもエラーやバグが起きないように検証をしていかないといけません。
地道な作業を根気強くできる人であれば、こういった作業を諦めず取り組めるはずです。
プログラミングで実現可能か考え続けられる
プログラミングは、所詮はスキルです。
重要なのはそのスキルを使って「何を実現するか」です。
人から言われたことだけをただやるのではなく、製品やサービスに対して「何が実現可能か」、考え抜く力が必要になります。
もしプログラミングを学んでも、結局ただの知識で終わります。
最終的に何かの実現のためにプログラミング技術を昇華させられる人が向いています。
プログラミングに向いていない人の特徴
本来は、個人がプログラミングに取り組みたいと考えるなら勝手に進めれば問題ないです。
しかしながら、以下の兆候がすでに見受けられる人は注意が必要です。
- コードへのこだわりがない
- ビジネスサイドの興味関心がない
- エンジニアのつながりを疎かにする
コードへのこだわりがない
コードへのこだわりは、エンジニアとして重要な特性になります。
記述一つとっても、「コード負債に関わるか」「リファクタリングの重要性を理解しているか」などが見て取れるからです。
実際に、コードへのこだわりから製品やサービスの向上に関わるため、エンジニアレベルを測る指標となり、転職や案件獲得にもつながります。
「動けばなんでもいい」と考える人は、開発まで考えるとプログラミングに向いていないと判断してよいでしょう。
ビジネスサイドの興味関心がない
ビジネスを有利に展開するためにアプリやサービスをプログラミングにて開発するため、要求定義や要件定義・設計に至るまでビジネスサイドの要求が反映されたものを理解する力が必要です。
ただ要求に応えるために、考えることなくコーディングすると気づけば、炎上案件となり開発自体が白紙になります。
プログラミングで実現可能かどうかを考えビジネスサイドにも要求を通す、あるいは把握した上で炎上案件を避ける能力は稼ぎ続けるためにも大切です。
PMやPdMなど、マネジメント層に上がるためにも常に「ビジネスサイド」への理解も深めないと息の長いエンジニアにはなれません。
エンジニアのつながりを疎かにする
基本的に、エンジニアは企業に属していてもフリーランス案件であってもチーム開発が主流です。
チームメンバーごとに役割が違い、開発領域も違い、とにかくエンジニアのコミュニケーションツールはテキストメッセージやプロジェクトのチケットで膨大になりがちです。
帰属している企業であればもちろんのこと、フリーランスとしてSES案件や直接案件であっても横のつながりは大切です。
特に、働き方を変えるタイミングで転職時や案件獲得までの面談でチームへの貢献度も重要な指標になります。
個人開発以外を考えると、エンジニアのつながりを疎かにしないことが無難です。
プログラミング学習で挫折する事例
プログラミング学習で挫折する人は、いくつか共通点があります。
短絡的に取り組み始めると、驚くほど簡単に挫折するため注意が必要です。
- プログラミング学習の目的が定まっていない
- 独学の限界が訪れる
- 丸暗記科目のように記憶に頼る
プログラミング学習の目的に対する過程が定まっていない
様々なネット記事でプログラミング学習において目的設定が重要であると記載されています。
しかし、目的が定まったからといっても、目的に対する過程が分からない人も少なくないでしょう。
実は、目的を定めること自体は非常に簡単です。
- プログラミング学習を経て就職する
- 個人開発でWebサービスを立ち上げる
- 年収アップのためにエンジニアへキャリアチェンジする
- 独学から始めてフリーランスエンジニアになる
もはや目的設定は抽象度が高すぎて、立てる意味すら感じません。
目的に対して、自身で考えられる過程を書き出し、期間を設けると現実と計画の差異が分かるため、今後の指針を立てやすいです。
例|独学から始めてフリーランスエンジニアになる
各サービスの求人内容を確認して、どのようなスキルセットが求められるか把握する。
一つのプログラミング言語の習得を目指す。
成果物として簡単なアプリ開発を実施する。(ToDoアプリなど)
独学で何が分かり、何が不明なのか把握することでスクール検討するのか期間延長するのか判断する。
ステップ2で問題がなければステップ3に進行する。
目的達成のためにサポートが必要かどうかアクションしてから検討する。
サポートが必要と判断した場合は、どんなサポートが必要で特定のサポートが備わっているサービスを探す。
かなりざっくりしていますが、明らかに目的設定のみと比べて段違いに取り組むものが明確化されています。
また、独学の限界を感じた際に、次のアクションを一つでも書き出しておくとスムーズに移行できるはずです。
目的設定で終えるのではなく、目的に対しての過程を考えられる範囲で計画に落とし込みましょう。
計画変更がほぼ間違いなく発生しますが、闇雲に学習することなく常に期間とアクションの修正を行い、必要なことだけを最短で取り組めるようにするとよいです。
独学の限界が訪れる
上述した通り、学習する目的に対して過程を疎かにすると独学の限界が訪れた場合に挫折します。
なぜなら、次のアクションを事前に用意できなかったために、スムーズなアクションの移行ができずモチベーション低下が著しくなるためです。
常に自分ができなかった最悪のケースを考えておくとよいです。
また、そもそも独学のみでお金をかけず専門性を身に付けることは非常に困難です。
無理とは断言できませんが、高確率で限界が来ることは覚悟して取り組みましょう。
丸暗記科目のように記憶に頼る
プログラミングにおいて丸暗記して対応するといった記憶に頼る方法はやめましょう。
あるいは、コピペやChatGPTに記述させるなど、把握・理解していないコードを利用するのは危険です。
エラー等が発生した際に、全く対応できなくなるためです。
自身が触れるプログラム全体がどのような処理を踏んで動作しているかわからないと、修正等が必要なコーディング時に悪影響が及びます。
コピペやAIに頼るとしても、プログラム全体を理解した上で実施しましょう。
プログラミング学習を無駄にしない方法
最終的に、プログラミング学習を無駄にしない方法はたった一つです。
「目的設定から学習過程と対策を明確化した上でプログラミング学習の内容を絞る」といった内容になります。
最もよくないことが、初学者の段階で複数の言語に挑戦したり、無駄な参考書やネット記事を読み漁ることです。
まず決め込んだプログラミング言語一つを基礎学習することで、見えてくるものがあります。
また、基礎学習の段階でPCと向き合えるか、長時間コーディングができるかあなたの素養も特性もわかってきます。
ぜひ、プログラミング言語の基礎学習を経て、やめるかやめないか判断してみましょう。