独学でコーディングを学び、成功するための10のヒント
独学でプログラミングを学ぼうとすると、最初は疑問ばかりが先立ち、答えが見つからないことがよくあります。
何を学べばいいのか?バグの直し方はどうやって調べるのか?そして、どうすれば「無理な任务」に思える瞬間でもモチベーションを保てるのか?
コーディング学習での成功に不安を感じているなら、この10のヒントがきっとあなたを励まし、前へ進む原動力になるはずです。
1. 学習を始める前に、具体的な目標を定める
プログラマーを目指す人から最もよく受ける質問が「どの言語を学ぶべきですか?」というものです。
気持ちはわかりますが、実はこれは最初に問うべき質問ではありません。
本当に最初に問うべきは、「コーディングを学んで、自分は最終的に何を実現したいのか?」という問いです。
旅行にたとえると分かりやすいでしょう。行きたい場所も決めずに旅行に出かける人はいません。コーディングも同じで、「学ぶためだけに学ぶ」人はいません。必ず理由があるはずです。
あなたはコーディングを学んで、何をしたいのですか?
時間をかけて、最終的なゴールを考えてみましょう。ゴールが見えたら、そこから逆算して、達成するために必要なステップを導き出せます。
それでも目標が定まらない方は、よくある例を参考にしてみてください。
- 地元の企業に就職して、安定した収入を得たい
- 小規模事業者向けにWebサイト制作のビジネスを始めたい
- モバイルアプリ開発で収入を得たい
- テック系スタートアップで働きたい
時間を無駄にしたくなければ、目的もなく彷徨いたくなければ、まず「一番の目標」を明確にすることが絶対に必要です。
2. 学習プランをひとつ決めて、最後まで貫く
今の時代、オンラインで独学する最大の魅力は、学べるチュートリアルや記事が非常に豊富にあることです。検索すれば、どんなテーマでも動画や記事が見つかります。
しかし裏を返せば、リソースが多すぎて「どれがベストなのか」を選びきれず、圧倒されてしまうこともあります。
私のアドバイスはこうです。「XやYやZを学ぶのに世界一のチュートリアル」を探し求めて時間を使うのはやめましょう。
まず、ひとつ選ぶこと。
たとえ最高のものでなくても、それなりに質の高い内容である可能性は十分あります。完璧な教材を探すことよりも、選んだものをやり遂げることの方がずっと重要です。
正直に言えば、オンライン講座を次々と買い漁り、あちこち渡り歩くのは、集中力の欠如による「立派な名目だけの先延ばし」であることも少なくありません。
何かひとつ選んだら、(本当にひどい教材でない限り)最後まで続けましょう。気に入らなければ、また別のチュートリアルに挑戦すればいいのです。
3. マラソンであり、スプリントではない
「3ヶ月や半年でプログラミングを習得し、就職できる」と謳うブログ記事や動画はたくさんあります。不可能ではありませんが、条件がそろって初めて成り立つ話です。
フルタイムの仕事をしていなくて、資金に余裕があり(特にブートキャンプは1万ドル以上かかることも)、そのペースについていける体力がある——そんな条件がすべて揃えば、Webデベロッパーとしての正社員職を得られるかもしれません。
問題は、こうした誇大宣伝によって「コーディングへの道は簡単だ」という楽観的なイメージを抱いてしまう人が多いことです。そして実際の難しさを知ったとき、大きなショックを受けることになります。
ブートキャンプを経て数ヶ月でプログラマーの仕事を得た友人も確かにいます。しかし、ブートキャンプではなく独学で学んだ人たちの話を聞くと、かかった時間は1〜2年と、はるかに長いのが実情です。
独学のリアルな体験談をお探しなら、Owenへのインタビュー記事(リンク)を読んでみてください。彼はフルタイム勤務がありながら幼児の子育ても抱え、ほぼ毎日夜明け前に起きて、2年間コツコツと学習を続けました。
最近ようやくWebデベロッパーとしての正社員の仕事を得ましたが、それは長い長い努力の末の結果です。
決して意気消沈させたいわけではありません。ただ、コーディング学習のより現実的な姿を知っておいてほしいのです。夢は必ず叶います。ただし、数ヶ月ではなく、1年以上かかることを想定しておきましょう。
4. ゆっくり着実に、が勝ちへの近道
コーディング学習が簡単ではないことは、もうお分かりですね。だからこそ、深夜や早朝の学習で燃え尽きないように注意しましょう。
中には「一刻も早くすべてを学びたい」と、仕事終わりに毎日5時間の学習を試みる人もいます。
できる人もいるかもしれませんが、多くの人には負荷が大きすぎます。疲れ果てて挫折してしまう危険性が現実にあるのです。挫折こそ、絶対に避けなければならないものです。
では、燃え尽きずにコーディングを学び続けるには?
鍵は「持続可能なペース」を目指すことです。まずは1日30分〜1時間から。あるいは週に数回、1〜2時間程度でも構いません。
もちろん、投入できる時間が多ければ進みも速くなります。しかし、小さく始めれば、徐々に学習時間を増やしていけます。
一度習慣が身につけば、挫折することなく、学びの道を歩み続けやすくなります。
5. 他人と自分の進捗を比べない
実践するのが難しいアドバイスですが、目標に向かっている間は、他人と自分を比較しないようにしましょう。
同じことをしている人と自分の立ち位置を比べることが良い刺激になる場合もあります。しかし、SNSが常態化した今の時代、比較は往々にして落ち込みにつながります。
成功のカギは、頭を下げて自分の足元だけを見ること。他人の進捗は気にせず、自分自身の進捗だけに集中することです。
人によって学ぶ速さは違いますし、それでいいのです。誰もが異なる生活環境を持ち、異なるペースで学んでいます。
他人との比較を考える時間が減るほど、自分自身の道に集中できるようになります。
……ただし、仲間とは友達になろう!
他人と比較し続けるべきでないと言いましたが、だからといって世界から完全に孤立しろという意味ではありません。
むしろ、オンラインで一人でコーディングを学んでいると、あっという間に孤独感に襲われます。
同じ道を歩む仲間を見つけて友達になることは、モチベーションの重要な源になります。
なぜでしょうか?
第一に、自分と同じ問題に苦戦している人が他にもいると知るだけで、大きな励みになります。
さらに、友人同士は問題解決を助け合えます。視点が複数あることで、一人で悩むよりも良い解決策が見つかることも多いのです。
通学制のスクールで学んでいるなら、他の学生と一緒に勉強してみましょう。オンライン学習なら、Meetupのイベント、Web開発専用のFacebookグループ、InstagramなどのSNSで、コーディングコミュニティを探してみてください。
友情やつながりを築くことは、目標に向かう間のモチベーション維持に役立ちますし、あなたも他人を励ませるようになります!
6. 毎日のスケジュールにコーディングを組み込む習慣をつくる
コーディングの時間を見つけるのは本当に難しいものです。誰もが忙しい日々を送っていますからね。
しかし、毎日、あるいは週に数回コードを書く習慣を身につければ、正しい道を歩んでいます。
習慣(良くも悪くも)を育てるのは、荒野に小道を作るのに似ています。最初にその道を歩くときは、はっきりした道がないため困難です。しかし歩く回数が増えるほど、道は次第にはっきりしていきます。やがて長い時間を経て、道は平らで歩きやすいものになるのです。
習慣づくりも同じです。最初の数回は、机に向かってコードを書くのがとても辛いかもしれません。でも続けていれば、脳がそのパターンに慣れてきます。脳はルーティンを好むので、時間が経つにつれ、習慣を始めることがどんどん楽に感じられるようになります。
習慣を定着させる方法はいくつかあります。
代表的なのが、新しい習慣の直前に起こる「トリガー」を設定することです。たとえば、朝一番のコーヒーやお茶を淹れたらすぐに机に向かってコードを書く、といった具合に、朝のルーティンに学習を組み込めます。
あるいは夜なら、夕食後の片付けが終わったらすぐにコーディングを始める、というのもよいでしょう。
何であれ、習慣を続けるカギは、時間をかけて繰り返し続けることに尽きます。
7. 調べて問題を解決する力を身につける
自力で問題解決できる能力は、Webデベロッパーにとって最重要とも言えるスキルです。
経験豊富なエンジニアは、すべての答えを即座に知っていると思っていませんか?それは全くの誤解です。
もちろん暗記していることもありますが、Google(やDuckDuckGo)で調べることはたくさんあります。業界歴7年の私自身も例外ではありません!
では、この極めて重要なスキルを磨くにはどうすればいいのでしょうか?
練習あるのみです!
詰まったとき、誰かに助けを求める前に、まず自分が直面している問題やエラーメッセージを検索する時間を持ちましょう。
私はよく「XXX doesn't work(XXXが動かない)」と検索します。すると、私と同じ問題に遭遇した人のStack Overflowの投稿がヒットするからです。
もうひとつのヒントは、使っているツールやソフトウェアの公式ドキュメントを見つけて読み込むことです。
さらに、解決策が見つかった後も時間があれば、その周辺領域について追加で調べてみましょう。そうすることで、厄介なバグ修正のたびに、スキルアップのチャンスへと変えられます。
こう考えてみてください。初めてある問題を調べるとき、解決まで3時間かかるかもしれません。しかし、そこに至った過程を覚えていれば、次に同じ問題に遭遇したときは、はるかに短い時間で済むはずです。
頻繁につまずく問題の解決方法を学べば学ぶほど、あなたはより速く、効率的なWebデベロッパーになっていきます。
8. チュートリアルを見るだけでなく、実際に作ってみる
コーディング学習における最も魅力的な落とし穴のひとつが、大量のチュートリアルを読み、大量の動画を見て満足してしまい、実際にスキルを練習しないことです。
こんな状況を想像してください。ランニングのトレーニングをしていると言っていたのに、ほとんど走っていない人がいたら、「口だけの人だな」と思いませんか?技術を学んだり、必要なシューズを調べたりする時間はあっていい。でも、いつかは実際に走らなければなりません。
Web開発も同じです。コーディングスキルを学び、作業を楽にするツールやソフトウェアを揃えるのは当然大切です。しかし、すべての時間を受動的にチュートリアルを流し見することに費やしていたら、実は何も学べていません。
私は実務を通じてWeb開発を学びました。YouTubeで面白いコーディング動画を探して見ている余裕などなかったのです。納期があり、それまでにどうやってWebページを動かすか考え抜かなければなりませんでした。
火に投げ込まれるような試練で、確かにストレスもありました。しかし振り返れば、これほど良い学び方はなかったと思います。Webデベロッパーとして働いたわずか数年で、膨大な実践的スキルを身につけました。すべて「作ること」によって得たものです。
だから、私からのアドバイスはこうです。
チュートリアルや本は素晴らしい教材です。しかし、セクションや章を読み終えたら、一旦ポーズを押しましょう。コードエディタを開き、今学んだことを復習し、教材のサンプルを再現してみてください。
読むだけ、聞くだけよりはるかに大変ですが、実践こそが概念を確実に記憶に定着させると約束します。
9. 失敗を受け入れる
失敗は嫌なものです。誰もが上手くやりたいし、ミスをしたくないものです。
しかし、失敗やミスを避けようとすることは、実は前に進むための最悪の方法です。失敗してこそ、正しいやり方を学べるからです。
私がジュニアWebデベロッパーだった頃、ミスをすることへの恐怖が大きすぎました。何かで詰まったとき、上司に助けを求めるのは「自分一人でできなかった」と認めるような気がして、心底嫌でした。
さらに悪いことに、ミスをしたとき、特に公開中のWebサイトに影響が出たときは最悪でした。本当に大きな失敗をしてしまったと感じたからです。
そんな状況では、誰にも失敗を知られたくないというのが即座の反応でした。
しかし、それ以上に分かっていたのは、状況を最も早く(そして最も誠実に)修復する方法は、白状して上司に助けを求めることだということです。
もちろん職場環境によりますが、私の経験では、ミスをしても、できないことを認めても、トラブルになったことは一度もありませんでした。
失敗を恐れるあまり、「安全圏」にとどまり、ミスの可能性がある状況を避けようとしてしまうことがあります。しかしそれでは、本来伸びられる分だけ成長できません。
難しいことですが、突き進み続け、挑戦し続けましょう。ミスをしても大丈夫!コーディングで文字通りの生死に関わる場面はまずありません。最もあり得る結果は、恥ずかしい思いをするか、批判を受けるか、その程度です。
それは単なるエゴです。エゴを脇に置いて、失敗を受け入れましょう。(私自身も実践しようと努力しているアドバイスです——簡単ではありません!)失敗やミスにオープンでいられれば、長い目で見れば必ず良い結果をもたらします。
10. 常に学び続ける
学びを止めないこと。
初心者の頃は、Web開発の世界は圧倒的に広く感じられます。学ぶべきスキルが数百もあるように見えるからです。
しばらく学習と実践を重ねると、次第に安心感を覚えるようになります。スキルが増え、自信がついている証拠なので良いことですが、そこで停滞してはいけません!
私たちの業界は絶えず変化しています。変化についていかない期間が長すぎれば、時代遅れになってしまう可能性があります。
一例を挙げましょう。私はCSSのfloatプロパティを使ったレイアウト構築がかなり得意になっていました。flexboxについては聞いたことがあり、同僚たちもその優秀さを語っていました。
しかし、新しい技術を学ぶのに時間を割くことに躊躇していたのです。正直に言えば、絶対に必要でない限り新しいことを学ぶのが面倒だったからです。
結局、flexboxを学ぶことになりました。習得にそれほど時間はかからず、理解した瞬間、「もっと早く学んでおけばよかった」と自分を责めました。
今では、最新技術をキャッチアップすることの重要性を痛感しています。flexboxの学習を遅らせたことはキャリアに大きな傷を残しませんでしたが、もし一生学ばなかったら?いずれWebデベロッパーとして市場価値がなくなっていたでしょう。
とはいえ、世の中に存在するすべての言語、ツール、スキルを学ぶ必要はありません(本当に望むなら別ですが)。大事なのは、主流になり、広く使われるようになった新しいツールを学ぶことです。
たとえばReact.jsとNode.jsは登場から数年が経ち、今や業界を席巻しています。まだ学んでいないなら、今まさに学ぶ価値のあるスタックです。
では、何が人気なのかをどうやって知ればいいのでしょうか?
私が情報収集に使っている方法をいくつか紹介します。
- Syntax.fm — Wes BosとScott Tolinskiによるポッドキャスト。Web開発の最新トピックや関連テーマを扱う、本当に素晴らしい番組です。
- CSS Tricks — CSSに関する記事とチュートリアルが豊富に揃っています。創設者のChris Coyierは、Web開発のプレイグラウンドCodepen.ioの創設にも関わりました。
- Stack Overflow — 毎年Web開発の現状に関する調査を発表しています。何が勢いがあり、何が廃れつつあるかを把握するのに最適です。
- Smashing Magazine — Web開発、UX/UI、Webデザインなど幅広いトピックを扱っています。
とにかく、始めてみよう!
このヒントが、Web開発学習への不安を和らげ、ワクワク感を高めるきっかけになれば嬉しいです!
最後のアドバイスは、とにかく始めること。何をすればいいのか完全には分からなくても、それを理由に踏み出さないでください。どこかから始めれば、道は進みながら見えてきます。
-
iCloud写真が同期されないときの対処法8選【iPhone・Mac・Windows対応】
iCloud写真を使えば、iCloud対応のすべてのデバイスで写真を同期し、どこからでもアクセスできます。通常は問題なく動作しますが、ときどきiCloud写真が同期されなくなることがあります。その場合、デバイスからiCloudへ写真がアップロードされなくなってしまいます。同期されない原因はさまざまです。アップロード先のサーバーがダウンしているのかもしれませんし、モバイルデータ通信の制限が影響している可能性もあります。以下では、考えられる原因ごとの解決策を8つ紹介します。1. Appleサーバーの障害を確認するiCloud写真の同期をはじめ、iCloudに何らかの問題が起きたときは、まずAppl
-
今日から使えるAndroid 6.0 Marshmallowの便利なヒントとコツ
Android 7(Nougat)が正式リリースされ、多くのユーザーが自分の端末への配信を待ちわびています。しかし実際には、待ち望んでいたアップデート通知が届くまでの間、Android 6(Marshmallow)を使い続けなければならない人がほとんどでしょう。また、端末の仕様上、新しいバージョンへアップグレードできないために、Android 6を使い続けるしかないユーザーも少なくありません。つまり今なお、相当数のユーザーがAndroid 6を利用しており、今後も使い続けることになるのです。 Android 6を使い始めて1年ほど経つ人でも、そのすべてのテクニックや隠し機能を把握しているわけで