プログラミングって難しいの?
興味はあるけど、私にもプログラミングできるのかな?
黒い画面に並ぶコードを見たことがあるけど、絶対に無理!
こんな風に考えている人に向けて、この記事では解説しています。
プログラミングに抵抗感を持っている人や、プログラミングの難しさを知りたい人には特におすすめの記事になっています。
スポンサーリンク
プログラミングって難しい?
私は今フロントエンジニアを職業にしていて、画面デザイン(HTML・CSS・Javascript・JQuery)をメインに、C#などのバックエンドにも取り組んでいる駆け出しエンジニアです。
プログラミングを本格的に取り組みだしたのは、ここ1年くらいの事で、それ以前はほとんどプログラミングというものに触れてきませんでした。
今となって初歩的なつまづきはなくなりましたが、ここ1年振り返ってみてよく頑張ってこれたなと思っています。
プログラミングは想定以上に難しく、独学で勉強していくのはかなりハードルが高い物だと感じました。
「誰かに教われたなら教わっておきたかった」というのが一番大きい感想です。
プログラミングの基礎や、フレームワーク、開発環境についてある程度理解できれば、それ以降は詰まる事があっても自己解決を目指せます。
そのレベルに達するまでが、プログラミングの難しい点だと言えます。
プログラミングが難しい理由
では、プログラミングの難しい点について見ていきましょう。
スポンサーリンク
コードの書き方が人それぞれ
1つ目の難しい点として、コードの書き方が人それぞれに別れる事です。
C#のif文を例に挙げて、見ていきます。
分岐の処理で、もし変数xが0だったら、変数testにtrue!を代入し、それ以外の場合にはelseを代入するという式です。
if(x == 0){ test = "true!"; }else{ test = "false!"; }
基本の形ではこのように記載するのですが、他の書き方として
test = (x == 0 ) ? "true!"; : "false!";
このようにif文を省略する人が出てきます。
上記2つはまったく同じ意味なのですが、プログラミング初心者にとって、このような情報がネット上でやりとりされていると、参考にした時にとても混乱してしまいます。
また、プログラミング言語がバージョンアップすると、新しい書き方が増えていくため、さらに混乱してしまう可能性が生まれるでしょう。
インターネットを活用して独学でプログラミングを学ぶ場合は、このような点に注意しておきましょう。
複数の言語理解が必要
2つ目に複数言語の理解が必要になる事です。
例として、Web系の開発ではHTML・CSS・Jacascript・JQueryなどが画面のデザインとして使われます。
基本的な構造はHTMLで記載し、CSSでデザインを付け加えます。
Javascript・JQueryで画面を動的に動かし、そして情報を保存するためにバッグエンド側に値を渡し、DBとやり取りを行います。
1つの例として挙げましたが、サービスは提供するまでに複数の言語を扱う場合が多く、1つの言語だけ習得しても、能力が足りない場合があります。
そのため複数の言語を勉強する必要があり、勉強に対する努力を続けられない人にとって、プログラミングは苦痛になる可能性が高いです。
担当外の言語が全然読めない
3つ目に、担当外の言語は全然読めないという点があります。
2つ目の「複数言語理解が必要」にも似ているのですが、エンジニアには大きく分けて、①フロント側、②バックエンド側、③AI・ディープラーニング系という分類ができます。
一般人からすると同じように見えますが、それぞれの特徴は全く異なります。
そのためエンジニアと一括りにしても、別分野のプログラムについては、分からない場合がほとんどです。
複数言語を使いこなそうと思うと、それに伴って勉強量を増やす必要があり、かなりの努力が必要になるでしょう。
関数?メソッド?クラス?インスタンス?オブジェクト????
次にプログラミングには、難しい概念や考え方が多く存在している事です。
「よし!これからプログラミング勉強するぞ!」となった時に、参考本や参考Webサイトに載っているキーワードの意味が分からない・・。
このような現象に陥ってしまいます。
これについては、勉強か経験以外で習得するのが難しいため、努力して理解するしかないというイメージです。
しかし実際には、それぞれの概念を意識して理解している人は多くなく、エンジニア界隈でも「○○はなんとなくこんなもんやろ!」みたいに感覚的に捉えている人も多いです。
勉強の仕方によって、プログラミングの習得難易度が変わってきそうですね。
スポンサーリンク
開発環境の構築が大変
5点目に挙げるのは、プログラミングの環境構築が大変な点です。
web系であればエディターを導入してコードを書き、ブラウザのデベロッパーツールを使えば、問題なく環境を整えられます。
しかしバッグエンド側のJava・C#・Cなどの言語やDBなどを扱いたい場合は、VisualStudioなどの大型ツールをが必要になったり、DL後の設定がかなりめんどくさかったりします。
プログラミングをするまでの環境構築が大変で、「もう無理!!」となってしまう人をこれまで多く見てきました。
プログラミングしていると変人だと思われる
次に黒い画面に向かって、プログラミングしていると変人だと思われる点です。
一般の人はコードのような文字列にかなりの抵抗感があり、それを必死に見つめて仕事をするエンジニアに対してかっこいいと思う反面、変人だと思っています。
最近になってエンジニアの需要が強くなり、昔ほどは変人扱いされないにしても、いまだにエンジニアの仕事の様子に対して一歩引いてしまう人も中にはいると思います。
今後さらにエンジニアの需要は高くなるため、変人扱いされる事は少なくなると思いますが、まぁプログラミングしている自分の姿を俯瞰的に見てみたら、「確かに変人だな」と少し思ったりします。
パソコンにスペックが求められる
次に開発するパソコンにある程度のスペックが求められる点です。
プログラミングはどんなパソコンでもできるわけではなく、ある程度のメモリやCPUがないと構築したツールを動かすのが難しいです。
以前に古いパソコンでコードの実行を試みましたが、起動せずプログラムが落ちてしまい、開発に取り掛かれる状況ではありませんでした。
そのためプログラミングしようと考えている人は、ある程度のスペックがあるPCを購入して下さいね。
システムリリース後の、バグ・エラー対応が大変
次にシステムリリースをしてからの、バグ・エラー対応が大変な点です。
自分だけのためにツールやソフトを作成するのであれば問題ないのですが、顧客向けにシステムを販売したり、提供するのであればこの点はかなり重要なポイントです。
もしシステムに個人情報流出の問題や、バグによるシステムエラーなどが発生すると、そのサービスは急遽止める必要が生まれます。
ゲームアプリなら命に関わりませんが、電車などの交通系システムや、FXや為替などに使われる金融系システムにバグが発生してしまうと、大変な事になります。
どんな分野でもリリース後のエラーは、顧客の信頼を失うことになるので、バグやエラーが出ないように注意しましょう。
動くはずなのに、動かない
最後に、「動くはずなのに動かない」です。
プログラムは理論通り正しく組むと動くはずなのですが、理由不明のまま動かない時がたまにあります。
大型プロジェクトであればあるほど、いろんな人がシステムに関係しているので「動くはずなのに、動かない・・」現象が起きる可能性が高いです。
その原因はちょっとしたコードのミスや、環境構築の設定ミスによって発生していることが多いのですが、そうならないように注意したいですね。
プログラミングを学ぶ事のメリット
次にプログラミングを学ぶメリットについてです。
さんざんプログラミングが難しい理由を挙げてきましたが、だからこそそれを乗り越えて、できる人に希少性と価値があります。
今後テクノロジー技術はどんなサービスにも必要になり、必ずといっていいほど多くの注目が集まるようになります。
プログラミングができるという希少価値
この記事ではプログラミングの難しい理由について触れてきましたが、これら以上にまだまだぶつかる壁は残されています。
そんな壁を乗り越えた技術力のあるエンジニアだからこそ需要があり、画期的な仕組みやサービスを生み出せるのはエンジニアだからこそです。
エンジニア市場は年々需要が高くなり、企業もより良いシステムを求め続けています。
その中でそれに答えられるプログラミング技術がある事は、とても大きな希少価値になると言えます。
実力主義・成果物主義
2点目にプログラミングは業務時間で評価されるのではなく、できた成果物で評価してくれる世界です。
マネジメントやカスタマーサクセスなどの職種は、長い時間をかけてやっと結果が分かりますが、エンジニアはそうではありません。
何か作りたい物を決まれば、それを成果物によって提示する事で結果と評価が得られます。
そのためどれだけ自分に技術力があるかという実力主義・成果物主義の業界です。
またプログラミングは時間や場所に制限されることなく、取り組む事ができ、自分にとって最適な環境で仕事に取り組む事ができます。
そんな世界を望む人にとって、プログラミングは大きなメリットになるでしょう。
-
【プログラミングスクール】のおすすめを現役フロントエンジニアが比較してみた
まとめ
プログラミングの難しい点と、プログラミングを今学ぶメリットについて解説してきました!
私自身もまだまだ駆け出しで、理解できていない部分がまだまだあります。
ですがその反面、初心者の気持ちがよく分かるなと思い、この記事を書いてみました。
今後も初心者がつまづくであろうプログラミングのポイントについての記事も書いてみたいと思います。
最後まで読んでいただき、ありがとうございました(*‘∀‘)