こんにちは、ITベンチャー企業でプログラマーをしていたおしま狩人です。
時間をかけて学習すれば、プログラミングの技術的な部分はかならず向上します。
ですが少し先をみている人だと
AIがどんどん発達すると、どうせプログラミングも秒でこなすんでしょ…?
勉強するとかムダじゃない?
という考えを持っていることでしょう。
…実はぼくもそうでしたから。
ですがプログラミング学習で得られることは、技術的な部分のみではありません。
ザックリまとめると”思考”そのものが変わっていくのですが、
- GIVEの精神が身につく
- ムダがなくなる
- 感情で物事を解決しなくなる
これらの変化が多かれ少なかれ出てきます。
それぞれを紹介していきますね(`・ω・´)
GIVEの精神が身につく
プログラミングの世界に足を踏み入れると、圧倒的なGIVEの精神に驚きます。
プログラミング言語をつかって、世の中をどんどん良くしていこうよ!
という仕組みやサービスが、ほかの業界よりも秀でています。
プログラミングは ”言語” なので、世界中で共有しやすいという特徴もありますしね。
無償で配布されるOS・Linux
PCを動かすためのOS(オペレーティングシステム)にはWindowsやMacOSがありますが、こだわった人はLinuxというOSを使っています。
このLinuxは、WindowsやMacOSとは異なり無料(オープンソースと呼ばれる)で世界中の人が使えるようになっています。
ほかにもgithubという世界中のプログラマーが集まり、自分や人のコードをみたり、レビューを受けることのできるシステムがありますよ。
とにかく、プログラミング業界はGIVEがすごい。
ムダがなくなる
プログラムを書くにあたって大事にされていることが、
余分なコードを書かない
という考え方があります。
余分なコードを書き込んで、プログラム自体は動くけど他の人がシステムの担当になったときに、理解できないようなグチャグチャなコードだと迷惑がかかりますからね。
なるべくムダをなくし、余計なことはしないような思考が鍛えられます。
”余分なコードを書かない”具体例を紹介
余分なコードと言われても、ピンとこないですよね。
リンゴをA, B, C, D, Eにそれぞれプレゼントする。
というたとえで説明していきます。
よくプログラミング初心者の方は、
Q, リンゴをA, B, C, D, Eにそれぞれプレゼントするコードを書いてください。
といった問題に対し、
- リンゴをAにあげた。
- リンゴをBにあげた。
- リンゴをCにあげた。
- リンゴをDにあげた。
- リンゴをEにあげた。
と書いてしまいます。
もちろんこの書き方でもプログラムは動きますが、ムダな部分が多いです。
キレイな書き方とは
リンゴを()にあげた。
と一文で表現し、()内にプログラミングで使える代入やfor文という仕組みを使ってA, B, C, D, Eを入れていく方法がいいです。
メンテナンスも楽
キレイなコードはシステムを開発した後に、
やっぱりFさんにもリンゴをあげたい!
となったときの手入れも楽になります。
前者のコードだと、
- リンゴをFにあげた。
というコードを追加する必要がありますが、
後者のキレイなコードは
リンゴを()にあげた。
の部分を修正する必要はなく、()内に文字を当てはめる部分の修正をするだけでいいんです。
どっちにしろコードを修正するなら一緒じゃ…?
というツッコみが聞こえますが、
システムをどんどん開発していくと、たくさんのダンボール箱が山積み状態のようになります。
修正のたびにそれぞれのダンボール箱を開けるのは面倒ですよね。
そうではなく、修正する可能性のあるダンボール箱を一箇所にまとめておけば、管理が楽になります。
このようなムダのない思考で、生産性の高い能力が身についていきます。
感情で物事を解決しなくなる
プログラミングを学んでいくと、すぐには答えのわからない問題に衝突します。
プログラミングを学びたい!
という意欲はあるのに、物事が進まずイライラする、落ち込む、焦る。。
よくあることです。
ぼくもかなり消耗しました。
ですがプログラミングのエラーやバグは、あなたがどんなに怒っても、泣いても、喚いても、適切なコードを入力しない限り動いてくれません。
問題を解決するのはどうすればいいのか。
- 冷静になって、タイピングのミスがないかチェックする
- 問題をググってみる
- 詳しい人に聞いてみる
当たり前のことですが、これらを落ち着いてできるかどうか。
何度もバグの解決をしていくと、問題への対処能力が身についていきます。
…人間関係においては、感情がないと解決できない問題が多いですけどね。
まとめ
プログラミング学習が決してムダではないことを、メリット3つにまとめて紹介しました。
冒頭で述べたような
AIがどんどん発達すると、どうせプログラミングも秒でこなすんでしょ…?
勉強するとかムダじゃない?
という気持ちでプログラミングを学ぶと、その薄っぺらい知識ではAIにいずれ負けてしまうでしょう。
そうではなく、プログラミングの本質的な部分まで学んでいくことで、有用な知識として今後も役立っていくのではと思っています。
Enjoy, your programming life!
おしま狩人でした。