プログラミングは難しい?【現役エンジニアが徹底解説】

PROGRAM

プログラミングが難しいと感じている方に。

この記事を読まれている方は、

  • プログラミングは難しいか知りたい
  • プログラミングの難しさをどう克服したら良いか知りたい
  • プログラミングの勉強法を知りたい

おそらくこのように考えている方が多いと思います。

この記事を書いている私は、
プログラミング未経験から転職を果たした現役のWeb系エンジニアです。
エンジニア歴は3年ですが、本業とは別にフリーランスの副業で月10万円ほど、多いときで20万円ほどの収入があります。

この記事では、現役のエンジニアが、プログラミングの難しさを徹底解説したいと思います。

プログラミングは難しい?

プログラミングは難しい?

結論から言うと、プログラミングそのものは難しくありません。
理由は、以下のとおりです。

  • プログラミング言語は人間が書きやすいようにできている
  • プログラミング言語にはマニュアルが用意されている
  • 先人たちの知恵がネット上にたくさん転がっている

一つひとつ解説していきます。

プログラミング言語は人間が書きやすいようにできている

まず、モダンな言語はほとんどC言語が祖なので、C言語の歴史について簡単に触れておきます。

C言語はもともとUNIXというOSを開発するためにデニス・リッチー氏が、ケン・トンプソン氏が開発したB言語を改良する形で誕生しました。

機械語やアセンブリ言語は機械のための言語であり、人間には理解しにくい言語でしたが、C言語は人間が使う言葉に非常に近い記述ができるUNIXのための言語として開発されました。

そのため、人間が書きやすいようにできています。
英語がベースとなっているため、ここで言う人間とは、あくまで「英語圏の人間」のことです。

でも安心してください。
英語といってもせいぜい中学・高校英語ぐらいの知識だけで理解ができます。
例えば、イギリスでは5歳〜16歳の義務教育期間の全学年でプログラミングの学習が必修となっているぐらいなので、プログラミングに高度な英語は要求されていません。

例えば、以下のPHPのプログラムを見てみてください。

<?php
    $age = 19;
    if ($age < 20) {
        print("未成人");
    } else {
        print("成人");
    }
?>

まず$ageという変数(値を格納するための箱)に19という数値が入っています。
数学で言えば、x = 19という代入ですね。
次にif(「もし〜ならば」の意)で、$ageの中に入っている数値が20を下回るならば、”未成人”という文字列をprint(「プリント、出力」の意)する、else(「それ以外」の意)であれば、”成人”という文字列をprintするというプログラムです。

どうですか?いずれも簡単な英語ですよね?
つまり、簡単な英語ができれば、プログラミングは問題なく書けるのです。
もし基本的な英語に自信がない方がいれば、いまのうちに復習しておきましょう。

プログラミング言語はマニュアルが用意されている

プログラミング言語には必ずマニュアルが用意されています。
メジャーなPHPやJavaなどであれば、Webブラウザ上で見ることができます。

上のように、ちゃんと日本語で書かれたものが存在していますよね。
ただし、もともとは英語で書かれているため、最新版や番外編のようなマニュアルは日本語のものがない場合があります。

エンジニアをしているとわかるのですが、肝心なものに限って英語で書かれていたりします。
これも基本的には中学・高校程度の英語レベルで読める場合が多いですが、もしかしたら読めない部分も出てくるかもしれません。

ですが、安心してください。
ほとんどは単語で拾えれば読めるものが大半で、問題解決のための具体的な操作内容がわかれば平気なので、中学・高校程度の英語がわかれば基本的には問題ありません。

わからない英単語が出てきた時の調べ方や勉強法については以下の記事で紹介していますので、そちらを参考にしてください。

また、ネット上で検索をかければ、日本人の先人の方が日本語でわかりやすく解説していたり、サンプルコードを書いてくださっている場合が多いです。これについては後述します。

先人たちの知恵がネット上にたくさん転がっている

世の中には、マニュアル以外にも、プログラミング言語に関する入門サイトや、サンプルコード、解説サイトがたくさん存在しています。

例えば、「PHP入門」と検索してみましょう。
PHP入門の検索結果
4570万件。これだけのページがヒットしますよね。

要するに、先人たちの知恵がネット上にはたくさん転がっているわけです。

開発者のスタンスとして、ほかの人が作ったものがある場合は、極力それを利用するということが大事です。(もちろん理解したうえで)
なぜなら、一からやっていては非常に時間(工数)がかかるからですね。

例えば、数学において微分・積分の公式を一から自分で発見する必要はないですよね?
既にニュートンがたくさん時間をかけ、公式を導いたのです。それを使えば良いです。

というわけで、わからないことがあったら、ネットで検索するクセをつけましょう。
どんなにくだらないことでも検索すれば必ずといっていいほどだれかがWebページ化してくれています。

プログラミングをする上で大切なこと

プログラミングをする上で大切なこと

ここまででプログラミングは思っていたほど難しくないということがわかったと思います。
それでは、最後にプログラミングをする上で大切なことを3点ほどまとめたいと思います。

  • 中学・高校英語を復習しよう
  • わからないことはネットで調べまくろう
  • 妄想をたくさんしよう

順番に解説していきますね。

中学・高校英語を復習しよう

先ほど解説したように、プログラミング言語自体が英語で書かれていること、マニュアルに英語が含まれるということから、中学・高校程度の英語は最低限必要という話をしました。

そのため、英語に自信がない人は中学英語の復習からはじめていきましょう。
「また中学からやり直しかよ・・・」と思う方は、そこまで悲観する必要はありません。
通勤時間などの空き時間を使ってスマホアプリで学び直せます。

興味がわいたらTOEICなどの資格取得も視野に入ってきます。
無駄にしていると感じる時間などをぜひ有効活用してみてください。

わからないことはネットで調べまくろう

ネット上に入門サイトやサンプルコード、解説サイトがたくさん存在しているという話をしました。そういう先人たちの知恵は惜しみなく利用しまくりましょう。

私自身、最初の頃はほとんどコピペでプログラムを書き始めてました(笑)
数をこなせば自然と覚えられるだろうというスタンスで、覚えていないことを恥じる必要は全くないと思っています。

以前恩師から言われたことがありますが、プログラマーやエンジニアは「広く浅く」を意識した方が良いです。
あまり特定の言語や領域に特化しすぎると、今後淘汰される可能性が高いです。
基本はコピペ、適宜自分のしたいことに合わせて修正するぐらいのスタンスで大丈夫です。

なので、検索するクセのない人はこれからたくさん検索をしてみましょう。
同じ悩みを抱えている人、それに対して回答を提示している人の多いことがわかります。

妄想をたくさんしよう

妄想をすることは大事です。
将来プログラマー止まりであれば別にいいですが、上流工程に携わるSE(システムエンジニア)やコンサルタントを目指すのであれば、ユーザーの課題を解決するために、一度ユーザーの視点に立って業務を理解し、システム化できそうなものを提案していかなければいけません。

そのためには妄想がたくさん必要です。

例えば、ある保険会社の業務で、契約書が毎回紙で届き、それの入力業務に相当な時間と人件費がかかっているとしましょう。

ペーパーレス化の一環として契約ができるWebシステムの構築を勧めることは当然の流れですが、
自称ペーパーレス化しても依然契約書を紙で送ってくる人たちもいるかもしれないし、自動化し過ぎて間違いが残ったまま処理を勝手に進めていってしまうかもしれません。

そういう色々な不確定要素を洗い出しておかないと後々「お宅がやるって言ったじゃないか!」等々・・・お客さんと揉める原因になり、顧客満足度を下げます。

詰めが甘いことがないように、エンジニアとしてたくさん妄想する力が大事です。
(これは別にエンジニアだけに限ったことではないと思います。)

ぜひ相手の立場に立って考えソリューションを提供する、そんなエンジニアを目指していきましょう。
これからプログラミングを学ぼうと考えている方は以下の記事も参考にしてください。