いつまでも童心を忘れず、子供のまま純粋に、生きたいように生きていこうって心に決めてたら・・・
いつの間にか、貯金がもうないのよね(愚)。
いい加減あたしも観念して、手に職をつけようって気になったのよ。
で、やっぱり時代はアイテー(IT)じゃない?
そう、プログラマーってのになろうって思い立ったの!
将来性の無いスキルじゃ、苦労して勉強する甲斐がないもんね。
でもほら、あたしなんて時代錯誤のアナログ女じゃない?
最近まで、「プログラミング」と「フラミンゴ」の違いもよく分かってなかったし。
まあ、フラミンゴが赤い鳥なのは分かったけどね。プログラミングは何なのかよくわかんなーい。
自分に向いてるのかどうか、まずはある程度独学で試してみようと思うのよね。
でも、独学でプログラミングを勉強することなんて出来るのかなぁ?
こんな疑問にお答えします。
本記事の内容
本記事の信頼性
IT業界歴 20年、現役のプログラマーであり会社の経営者でもあります。
結論・独学でも学べるっちゃ学べる。
とりあえず、「出来るのか、出来ないのか」の二択で言ってしまえば、
って事になります。
現実に、独学でプログラミングを学んでプログラマーになった人はそれなりにいますからね。
ただ、残念ながら
って話でもないんですよ。
実際問題、独学でプログラマーを目指した人のほとんど(約90%)が途中で挫折する
と言われています。
では、成功した人と挫折した人の差はどこにあるのでしょう。
- 単に適性の有無か。
- 勉強方法や、選んだ教材の違いか。
- 目標への熱意の量か。
成功するにしてもしないにしても、大変な道のりになる事は間違いありません。
プログラミングの学習は長い期間、地味な勉強と実践を積み重ねる作業です。
「プログラマー」という目標への長く険しい坂道を上り始める前に、プログラミングとは一体何なのか。
何を目標とし、何を学ぶべきで、どう学べばいいのか。
そこから考えてみましょう。
学習を始める前にやっておく事。
プログラミングとは何かを知る。
何はともあれ、まずは「プログラミング」が、いかなるものかを知っておかないといけませんね。
もしかすると、
がプログラミングと呼ばれているのかもしれませんから(怖)。
簡単に言いますと、プログラミングは
コンピューター君は実は不器用で、才色兼備では決してないんですが、ある点において人間の能力を遥かに超えています。
- とんでもない速さでの単純計算能力
- 神がかった記憶力
を持ち合わせています。
逆に言うと、それ以外はなにもしないんですよ。
自主性もないので、自分からは何もしません。
このシンプルではあるものの限りない可能性を持った能力を、我々人間が指示を出して、上手に使ってあげる。
そうすると無限の可能性が広がるわけです。
我々がコンピューター君に出す指示書が「プログラム」であり
指示書を書く事を「プログラミング」と言います
具体的に、「巨大ロボットに指示を出す」ところをイメージしてみましょうか。
ロボットは貴方よりもはるかに強く、硬く、大きな力を持っています。
ですが、そのロボットは日本語はおろか英語もフランス語もアラビア語もスワヒリ語も、やぶれかぶれのジェスチャーすらも通じないので、
「パンチだ!ロボット!!」
と命令したところで、うんともすんとも言いません。
そこで、
ロボットが理解出来る言葉、「プログラミング言語」
を使って、ロボットへの指示である「プログラミング」を書き、ロボットに伝える事によって、ロボットはそれに従って動いてくれるんです。
ですが、ロボット君は難しい話が苦手なので、ジャンプさせたいなら
と細かく指示しなくてはなりません。
そうして、最終的に人間の手では不可能な作業を完遂する事が出来るのです。
どこまでのレベルのプログラミングを目指すのかを考える。
「プログラミング」は「手段」であり、「目的」ではありません。
上記の例においても、「目的」はロボットを動かすことであり、プログラミングはその「手段」です。
何が言いたいのかと言いますと、
「習得したプログラミングで何をするか」であるべきです。
「独学で出来るかどうか」を判断するには、プログラミングを覚える云々以前に、目的がなくてはなりません。
貴方は一体、プログラミングを覚えて何をしたいんでしょうか?
- プログラミングスキルを身につけて、プログラマーとして就職したいのか
- ちょっとしたアプリやゲームを作ってみたいだけなのか
- 革新的なAIテクノロジーを開発して、世界を良くしたいのか
- はたまた、自ら斬新的なマッチングアプリを生み出して、素敵な恋人を手に入れたい!のか。
恐らく、目的を一切持たずにプログラマーへの道をただひたすら歩き続ける事は、まず不可能でしょう。
長い坂道の果てに、見たことの無い美しい景色が広がると分かって歩き続けるのと、ただただ苦しみながら歩みを進めていくのとでは、モチベーションが違います。
また、貴方の目指すゴールがどこにあるのかによって、学ぶべき内容も期間も変わります。よって、目的設定はより具体的である方が好ましい。
プログラマーとして就職するにしても、「WEB系」、「アプリ系」、「ゲーム系」、「汎用系」、「通信系」など色んなタイプがあり、それぞれ学ぶべき言語やスキルが異なります。
目的無くプログラミングの学習を始めるのは、海図も持たずに大海に出るようなもので、進むべき方向も分からずウロウロと漂い続け、すぐに果てしない学習量に飲まれて溺れてしまうでしょう。
改めて、
学習のための準備をしよう。
そうなったら、次はいよいよプログラミングをするための準備を整えましょう。
難しく考える必要はありません。
どんなパソコンを買えばいいの?
もうパソコンを持っているのであればそれを使って頂いて構いませんがあまりにも性能が低いパソコンですと、ちょっと厳しいですかね。
ただでさえ大変な勉強に取り掛かるのに、唯一の武器が錆び付いていては勝負になりません。
目安としては、
・メモリが8G以上
・CPUがCORE i5 と同等程度 以上
であれば問題ないでしょう。
キャン ユー ブラインドタッチ??
あのー、ここで一旦、難しい話は置いといてですね。
そもそもが貴方、ブラインドタッチは出来ますかね(真剣)??
とは思わないで下さい。
現実に、キーボード操作が覚えられず、プログラミングを諦めた知人がいます。
諦めないまでも、必要最低限の速度で文字が打てないままプログラミングを学び始める人も少なからずいます。
これは引き金の引き方を知らないまま戦場に出る様なものです。
プログラマーは1日に数千数万の文字を入力する仕事。
タイピングは「基本の『き』」です。
幸いにも、趣向を凝らしたタイピングゲームがたくさんありますので、楽しくブラインドタッチから覚えましょうね。
どのプログラミング言語を使うのか決める。
さて、ここまでの準備ができたら、学習スタートまではもう少しです。
最後に、
そう、コンピューター君が理解できる「プログラミング言語」は一種類ではなく、目的に応じて、適した言語を使う必要があります。
どのくらいの種類があるのか気になるところですが、一般的には知られていないものも含めると
まあ、全部が全部現役で使用されているわけではないんですが、それでも現状で50くらいは使われてると言われてます。
AKBの推しメン決めるわけじゃあるまいし!
と、嘆かなくて結構ですよー。
何故なら、目標設定が出来ていれば、学ぶべき言語も決まるからです。
というわけで、目標別に代表的なプログラミング言語もいくつか紹介しておきましょうか。
目的別 プログラミング言語
○webデザイン
- PHP〜世界中で需要が高く、日本でも多くのプログラマーが使用。
- Ruby〜日本人が開発しており、初心者にも学びやすい。
- JavaScript〜WEBページにおいて、画面に動きをつけられる。
○スマホアプリ開発
- Java〜Androidアプリ開発のための代表格。
これ一つ覚えれば色々作れる。人気があるので参考資料多く、求人も多い。 - Kotlin〜2017年にAndroidの公式開発言語になったので、扱える人間が少なく、将来性が高い。
Javaと互換性もあり、かつJavaよりシンプルで簡単。あと、「コトリン」って名前が可愛い^_^ - Swift〜2014年にApple社が発表。iOS開発には必須。
初心者でも学びやすく、かつこれからの需要も見込める。
○ゲーム開発
-
C++〜昔からある「C言語」の拡張版。難易度は高いが、複雑なプログラムも安定して作れる。そのため大規模な開発にも向いてる。
-
C♯〜ゲーム開発では最も使われてる。Java・C言語・C++のいいとこ取り。C++よりは難易度低め。
-
JavaScript〜WEBページ上でよく使われる言語。 そのためブラウザゲーム開発向き。
○AI開発
-
Python〜AI開発といえばコレ。もともとAI開発専用というわけではなく、シンプルかつ何を作るにしても使える万能言語なので、近年では1番の注目株。
- R〜汎用性は低い分、「統計解析」に特化している。
- Julia〜2012年に発表。PythonやRよりも新しいので、様々な言語の良いとこ取り。処理速度早い。
とまあ、特に代表的なものだけでも、これくらいあるんですよ。
自分の目標設定に沿った言語を選ぶのはもちろんですが、周りにプログラミングを教えてくれる人がいるなら、その人が使える言語を選択するといいかもしれませんね。
独学とは言いながら、1人では必ず行き詰まるはずですから。
どうやって「独学」を始めるか。
本を読んでお勉強。
昔ながらの、ド定番の学習方法ですね。
ネットで情報収集できる時代になりまして、ゲームの攻略情報やスポーツ・趣味のハウツー本なんかは需要がずいぶん下がったでしょう。
でも、だからって本を「時代遅れ」と侮るなかれ。
ネットの世界では発言の自由度が高いので、
あるトピックに関して自身がスペリャリストであるならば情報の選別は可能でしょうが、これからそのトピックについて学ぼうとしている段階で、何が正しくて何が誤っているのかを判断するのは不可能だと言えます。
その点、本に関しては、「好きに書く事」は可能でも「好きに出版する事」は出来ません。第三者である出版社が内容を確認・精査して出版しますので、内容や文章も整理され、順序立てて書かれています。
ただ、出版された本とは言えども、内容もクオリティもピンキリです。
さらに、IT業界はものすごい速さで進化しておりますので、一昔前の書籍では全く役に立たない可能性もある。
レビュー口コミなどでしっかり厳選して選びましょう。
プログラミング学習サイトでお勉強。
もちろん、ネットでの学習方法も多数あります。
本と同様に、好きな時に好きなところで勉強が可能
ですし、活字を見てばかりいると眠くなる・・・という方にとっては「動画で勉強できる」というのは大きなメリットですね。
実際の声で説明を聞けますし、目から入る情報も多いので理解も深まるでしょう。
ゲーム感覚で楽しく学べるものもあります。
ただ、
とはいえ、学習のスタートとしては申し分ないので、
学習サイトで始めて、足りない情報を書籍で補うというやり方もオススメですね。
無料のサイトもありますが、ほとんどが
ある程度、プログラミングを覚えたなら、あとはひたすら「実戦」で学ぶ。
本を買ったり、学習サイトを使ったり、という方法は学習の入口としては正解ですが、そこからは正直、実践練習しかありません。
実際にプログラムを作り、エラーが出る度に解決策を調べ、再度作っては行き詰まり・・・という作業を延々と繰り返します。
一見、効率が悪いのでは・・・と感じるかも知れませんが、よく言われる様に
最初に必要な情報を全部頭に叩き込んでから実践に移る、というのはどう考えても不可能ですし、現実的ではありません。
新しく買ったゲームを始める時に、説明書を完全に暗記してから電源を入れる人はそうそういないかと思います。
基本的な情報に目を通したら、実際に操作してみて、ゲームを進める中で分からない点が出てきたら再度説明書を読む。
これこそが、プログラミングの世界においてベストな学習方法です。
かのマイケル・ジョーダンも
少しづつ、でも確実に一歩一歩進めていきましょう。
加えて、マイケル・ジャクソンもこう言ってましたね。
「ポーーーーーーーーーーゥっっっッ!!!」
スクールに通うという選択肢。
さて、今回は
「プログラミングの独学は可能であり、その方法」というのをメインテーマにお話しさせて頂いていますが、実は大きな裏テーマも隠されていまして、それは
というのを伝える事です。
ある程度の高みまでは一人で登る事ができても、そこから先は独学ではいかんともしがたいというのが現実です。
独学を続ける中で、もし挫けてしまうようなら、独学を諦めスクールに頼る事も考えていいのではないでしょうか。
そもそも独学では
という状況に陥りがちで、この状態ではどんなに努力しても時間をかけても、なかなか前に進めません。
そんな時、道を示してくれる助言者や、苦難を共にする仲間達が周りにいたとしたら、大きな助けになるでしょう。
もちろん、経済的・時間的な理由からやむを得ず独学を志す人はいますが、間違いなく
将来性も高く、お金や時間を投資して身に付けるだけの価値があるスキルです。
諦める、という選択肢に踏み切る前に、・プログラミングを続けるための新たな選択肢を考えてみてもいいのではないでしょうか。
さいごに
って方、増えましたよね。
それもそうでしょう。
近年、テクノロジーの発達はどんどん加速していき、我々の生活とは切って離せないものになりました。
生活に必要なものはほぼ全てネットで購入出来るし、小学校ではプログラミングが必修科目になり、店舗では人工知能を持ったロボットが接客し、会議はリモートで行われている。
今年70歳を迎える私の母はもちろん、アフリカ奥地のマサイ族までスマホを使う時代です。
「プログラミング」無くして、そのテクノロジーのどれ一つも存在できないのですから、それを操る「プログラマー」の需要はこれからも上がり続けることでしょう。
しかし、冒頭でお話しした通り、独学でプログラマーへの道を目指し成功するのはたった1割です。
そもそも、プログラミング自体が超繊細で、たった一つのミスで全く機能せず、そのたった一つを突き止めるために原因追求と修復を繰り返す、地道で途方もない作業です。
もちろん、プログラマーに向いている人とそうでない人はいますが、成功しているプログラマーの中にも、
って人はいないはず。
自分には才能がないと感じ、挫折しそうになりながらも何とか踏ん張ってコードを書き続けて来た人は、かなり多いはずです。
つまるところ、成功する秘訣は
月並みなセリフで申し訳ありませんが、
自分に適性が無いなんて感じないで下さい。
この仕事に興味を持った時点で「1%の才能」は持ち合わせているはずです。
古き良き時代の精神論、「諦めない事」。
皮肉にも、それこそが近代を代表する仕事である「プログラミング」における、最強の学習方法なんです。