Bicepper
ここ数年でプログラミングを学習する人がかなり増えました。
エンジニアとしては嬉しい限りです。
でも待ってください。
プログラミングを習得することが目標になってないですか?
「プログラミングだけ」だと何もできないですよー。
そもそもプログラミングとは?
そもそもプログラミングとはなんでしょう?
プログラミング初心者がなんとなくイメージができるのは、「パソコンでカタカタ作業をしている」ということでしょうか。
正確に言うならば、自分のやりたいことをコンピューターに指事して、思い通りに動かすことが、プログラミングです。
このプログラミングができないとコンピューターに指示が出せないため、プログラミングを習得することが必須なのは間違いないのですが、プログラミングの習得が目標になっている初心者が、かなりいます。
プログラミングの習得を目標にしても意味がない
プログラミング自体は「無色透明」
実は、プログラムやプログラミングのみでは、ほとんど役に立たないですし、あまり意味がありません。
プログラミングというのは、先ほど説明した通り、コンピュータに指示を出すものです。
例を挙げてみましょう。
この例の答えは「6」になりますが、これも立派なプログラミングです。
どんな言語で書くかによって書き方は異なってきますが、答えが6であることに変わりはありません。
試しにPythonでプログラミングしてみるなら、こんな感じでしょう。
print(1 + 5)
もう一つ別の例を挙げてみましょう。
こちらもPythonで記述してみると、以下のようになります。
for x in range(0, 1000): print("Hello World!")
人の手で書けば数時間はかかることも、プログラムに任せれば数秒もかからずに完了してしまいます。
とても便利ですよね。
しかし、待ってください。
あなたのやりたいことは、きっと違うはずです。
1+6を知りたいからプログラミングを習得しようとしているのでしょうか。Hello Worldを1000回表示したいからプログラミングを習得しようとしているのでしょうか。
違うはずです。
プログラミングはとても便利なものですが、それ自体がメインになることはほとんどありません。プログラミングは、何かを達成するためのいわば「手段」であり、プログラミング自体が目的ではないですよね。
無色透明なプログラミングに、自分なりのアイディアや価値を付け加えることで、はじめてプログラミングに価値が出てくるのです。
「ほとんど」と付け加えたのは、違う場合もあるからです。
その一つに、プログラミング自体が目的になる「競技プログラミング(競プロ)」や、プログラミングコンテスト(プロコン)というものがあります。
ここでは競プロやプロコンについて詳しくは説明しませんが、それぞれの目的としてはこんなものが挙げられます。
- アルゴリズムを競う
- 出された課題を解くまでの時間を競う
- プログラミングの実行時間を競う
- 難易度の高い問題解決を競う
まさにプログラミングそのものが目的と言えます。
もし競プロやプロコンに興味がある場合は、ぜひ調べてみてください。
アルゴリズムの重要性はどんな場面でも活用されますが、それはまた別の機会に話しましょう。
プログラミングと組み合わせるものが大事
プログラミングに、自分なりのアイディアや価値を付け加えることが重要であると説明しました。
簡単な例を挙げてみましょう。
- 「プログラム」と「計算」 = 電卓
- 「プログラム」と「画像」 = 画像認証システム
- 「プログラム」と「気温」 = エアコン
例を見ればわかる通り、プログラムに対して何かを組み合わせることで、初めて価値がついて、その威力を発揮します。
僕はWebアプリケーションエンジニアですが、これも
- 「プログラム」と「インターネット」 = Webアプリケーション
という組み合わせですよね。
ところが、最初の組み合わせでつまづいてしまう人が非常に多いのです。
Webアプリケーションの世界にフォーカスした話をすると、多くのプログラミング初心者は、このように答えます。
プログラミング初心者
そしておそらく、こう思っているはずです。
「大ヒットする、画期的なサービスを作ってやろう」
気持ちは理解できます。
FacebookやTwitter、Youtube、Instagram、Dropboxなど、世界中の人々に利用されているWebサービスは続々と出ています。
この大ヒットレベルに至らなくても、多くの人に利用されているWebサービスはごまんとあります。
ここで伝えたいことは、いきなりハイレベルを求める必要は全くないということです。
実現したい組み合わせがあるのであれば、それはいつか絶対に実現するべきですし、重要な目標です。
しかし、最初から無理難題を達成しようとするのは、あまりに無謀であり、挫折の可能性が高くなります。
まずは身近なこと、できることからプログラミングすることが大事です。例えば、
- 毎月定期的にやっているエクセルの処理を自動化してみる
- クレジッドカードの使用額を合計して自動通知する
- 好きなアイドルが写真を投稿したら、ダウンロードして保存するプログラムを作る
などなど、自分の身の回りのことや、日常生活、あるいは悩んでいることで探してみれば、かならず組み合わせたいものがあるはずです。
そうすれば具体的な目的や目標が立てやすくなり、また実現もしやすくなります。
案外、テキトーに考えて作ったものが大ヒットするかもしれませんよ?
Bicepper
プログラミングは無限の可能性がある
プログラミングが上達すればするほど、自分の夢や目標が実現しやすくなります。
ここで、僕が実現した夢の一つの例を挙げてみます。それは仮想通貨の自動売買取引のプログラムの作成です。組み合わせとしては、
- 「プログラム」と「仮想通貨」 = 自動売買取引BOT
ですね。仮想通貨にプログラムを取り入れるメリットとしては、
- プログラムが自動で取引するため、感情的にならない
- 人間では到底不可能なスピードで取引ができる
- 24時間休まずにプログラムが取引をしてくれる
の3つが挙げられますが、この3つがかなり強力なのです。なぜなら、人間では到底不可能な領域だからです。
どんなジャンルでも言えることですが、もし、もし相手がプログラムであると知ったら、勝負するでしょうか?
僕は勝負したくありません。なぜならほぼ間違いなく負けるからです。
しかし、プログラミングを習得しているのであれば、勝てる側に立つことができるのです。
実際にプログラミングができる人たちは、多くの利益を出しています。
今年は9月くらいまでは年次10億行けるかという状況でとても調子が良かったのですが、結局BFの着地はこの程度になりました。 pic.twitter.com/XSGmgfPltF
— HAT / 帽子屋???? (@hat_fx) December 31, 2019
檢閱濟 pic.twitter.com/SMXOFYtY3j
— カニ光線 (@KaniBeam_NEMber) December 29, 2019
僕もわずかながらですが利益は出ています。
微々たるものなので非公開ですが、いずれ公開する予定です。
よく考えてほしいことは、これだけの利益を出す人もいれば、負ける人もいるということです。
負ける人、それはどんな人かというと…もうわかりますよね。
プログラムに挑む人たちです。
実際、僕は仮想通貨やFXのことは全く知らなく、ど素人同然でした。
さすがに無知で参入するのは無謀すぎるため、少しは勉強する必要があると思い、以下の2冊だけ読み、最低限の基本を抑えたうえであとはプログラムと組み合わせただけです。
つまり、プログラミングさえ習得していればどんなジャンルにも応用が効くため、無限の可能性が出てきます。
【まとめ】目的を持ってプログラミングを習得しよう
プログラミング初心者のプログラミング習得とその可能性について紹介しました。
プログラミングを習得するだけでは、何も生み出すことができません。「プログラミングを習得して何がしたいのか」を明確にしていく必要があります。
何気なくプログラミング学習を始めることも全然問題ありませんが、目的がないと挫折する確率が非常に高まります。
まずは自分の周りを見つめ直すことで、プログラミングの習得を目指す目的が明確になりやすいので、ぜひ試してみてください。
Bicepper
プログラミング初心者は、まずは自分が何をしたいのかを見つめ直してみるといいですね!