面白い

自分でコードを教える最良の方法

写真:クリストファー・ガワー(Unsplash)

コーディングの方法を学びたいなら、この巨大な宇宙への最初の一歩を踏み出すことは、恐ろしいことではないにしても、気が遠くなるように思えるかもしれません。 ここに大きな秘密があります:必要なすべての支援を提供し、新しいテクニックを学び、この学習プロセスを楽しくて刺激的なものにするために使用できる無料の(そして安価な)リソースがたくさんあります。 。

テクノロジー業界への移行を検討している大人、最新の言語を学びたい学生、ソフトウェアやサービスの仕組みを知りたいだけの愛好家など、プログラミングを開始するためのコンピューターとインターネットアクセスがあれば十分です。旅。 しかし、あなたがに飛び込む前に、右の足であなたをオフに設定するための私たちの最高のヒントとリソースがあります。

自問してみてください:なぜコーディングの方法を学びたいのですか?

プログラミング言語を学習したい理由(理由)について考えるには、数分(または1日)かかります。 自分に正直になりなさい。 プロモーションを獲得するために最低限のことを学ぼうとしていますか? キャリアを大きく変えたいですか? 次に優れたアプリを作成しますか? さまざまなスマートデバイスをプログラミングして、すばらしいことをすることでルームメートを楽しませますか?

答えは、どのプログラミング言語を習得すべきか、また目標がどのようなコミットメント(時間とお金)で必要になるかを判断するのに役立ちます。 たとえば、次の優れたオペレーティングシステムまたはPhotoShopに代わるキラーの代替物を作成することを夢見ている場合、C ++を教える正式なコンピューターサイエンス教育のほか、データ構造、アルゴリズム、メモリ割り当てなどのより複雑なトピックを活用できます。

一方、技術系キャリアへの移行を検討している中途採用のプロであれば、短期のコーディングブートキャンプは、2度目の借金をするよりも理にかなっているかもしれません。 Webサイトを構築したり、Raspberry Piを限界までプッシュしたりするだけなら、インタラクティブなチュートリアルと無料のオンラインコースの組み合わせで十分です。

適切なプログラミング言語を選択してください

コーディングしたい理由がわかれば、どのプログラミング言語に取り組むべきかをより簡単に特定できます。 習得すべき「最良の」プログラミング言語はありませんが、一部の言語は他の言語よりもユーザーフレンドリーです。 HTMLとCSSは、コーディングの世界への最も簡単なエントリーポイントと考えられていますが、基本的なWebサイトの開発にのみ非常に役立ちます。

支払いシステムまたはデータベースを含むよりインタラクティブなWebサイトについては、すべてのコンポーネントを歌わせるためにJavascript、PHP、SQL、およびPythonを知っている必要があります。 モバイルアプリメーカーは、SwiftまたはCを使用してiOSアプリを作成し、JavaまたはKotlinを使用してAndroidアプリを作成します。 ビデオゲームの開発者は、UnityまたはC#を使用して、ゲームのアイデアを実現します。

まだあなたのスタータープログラミング言語を決定できませんか? ほとんどの専門家は、Python、C#、またはJavaScriptを学ぶことをお勧めします。最も幅広いユーティリティとキャリアの柔軟性を提供するからです。 あなたの心を決めるのを助けるために、いくつかの人気のあるプログラミング言語を比較するこの素晴らしいインフォグラフィックをチェックしてください。

何よりも、学習を始めてください。 あるプログラミング言語に慣れると、新しい楽器や外国語を習得するなど、次の言語をはるかに速く選択できるようになります。

オンラインコースをお試しください

学習スケジュールをより細かく制御したい場合(または単独で学習したくない場合)、オンラインコーディングコースは、対面のコーディングブートキャンプよりも優れたオプションです。 ただし、同じプログラミング言語を教えるさまざまなオンラインクラスがあり、どれが本当にあなたの時間とお金に値するかを判断するのは困難です。

ソロの練習を気にしないなら、The Odin Projectをチェックしてください。これは、コーディング初心者をプログラマーに変えるための最高のオープンソースコンテンツを集めた無料のオプションです。

フルタイムのブートキャンプをせずに、さらに1対1のコーチングとキャリア準備をしたいですか? UdacityまたはTreehouseのサブスクリプションモデル認定コースにサインアップしてみてください。コーディングの間違いや質問だけで悩む代わりに、チューターに助けを求める機会があります。 Udemyの$ 19のコーディングクラス(売り上げがある場合はさらに少ない)をはるかに上回りません。フルタイムのブートキャンプやコンピューターサイエンスの学生でさえ、学習を補うためにこれらのクラスにサインアップします。

多くのコースを修了しても、多くの初心者は比較的基本的な知識を適用するのが難しいと感じています。 そのために、Watch and Codeの無料のPractical JavaScriptコースをお勧めします。これは、継続的に反復する単一のプロジェクトを中心に展開します。

計算思考の学習に焦点を当てる

特定のプログラミング言語の学習に集中する代わりに、コンピューターが理解できる方法で学習することもできます。 つまり、パターン認識、アルゴリズム、抽象化などの概念でスキルを向上させます。 ループのような専門用語もあります。これは、使用するすべての言語でポップアップ表示されます。 これらの原則をよく理解すればするほど、次の言語を習得しやすくなります(結果として、より良い製品やプロジェクトを設計できます)。

インターネットのおかげで、コンピューターサイエンスの基礎を学ぶために4年間の大学プログラムに登録する必要はありません。 多くの大学レベルのクラスが無料でオンラインで利用できます(またはわずかな料金)。

ハーバード大学のCS50xのコンピュータサイエンス入門は十分お勧めできません。 edXを介してコースを無料で監査し、すべての課題を完了することで証明書を取得できます。または、自分のペースで進み、Youtubeに投稿されたすべての講義を見ることができます。 15のオンラインコースを選択して、独自のDIY大学レベルのコンピューターサイエンスプログラムを構築できます(その多くはGoldavelez.com Uシリーズにもリストされています)。

本を入手する

コーディングを学ぶための最良の方法は、いくつかの枯れ木を間近に見ることです。これは、最初から最後まで従うことができる本です。 完璧な世界では、これにより、Webサイトでトピックからトピックにジャンプするよりも、より包括的なコーディングの概要が得られます。

おそらく、GitHubで学ぼうとしている言語やフレームワークの電子書籍を見つけることができますが、多くのWeb開発者は、フロントエンドからバックエンドのWeb開発まで、すべてについてJon Duckettのカラフルなシリーズを誓います。

独学のプログラマーとして、職業に関する幅広いアドバイスを提供する本からも恩恵を受けるかもしれません。 学習することを決めた言語に適用できる思考と習慣、特性を改善します。 Steve McConnellの900ページのコードコンプリート:ソフトウェア構築の実践的ハンドブック(第2版)は、プロジェクト設計からコードのデバッグに至るまで、データに裏打ちされたアドバイスを含むベストプラクティスの決定的なガイドと考えられています。

その巨人の帰結は、クリーンコードです。「おじさん」ロバートマーティンによるアジャイルソフトウェアクラフトマンシップハンドブックです。 Martinは、簡単なテストとスケーラビリティのためにコードを効率的に記述する必要があると考えており、多くの最新の開発チームにとって必読のコードです。

プログラミングは本当に問題を解決するためのものであるため、Jon BentleyがProgramming Pearls(2nd Edition)で共有している思考プロセスと「バックオブザエンベロープ」ソリューションに感謝します。 すべての章は、技術面接でよく使用される多くの課題で終わります。したがって、この本を仕事の準備の一部にしてください。

インタラクティブなチュートリアルやコーディングゲームをご覧ください

それに直面してみましょう:画面または本でコードの行を読むことは、意味不明です。 実例を見ると、その抽象概念が突然完全に意味をなします。 これは、Webで見つけることができるインタラクティブなコーディングチュートリアルの美しさです。

たとえば、FreeCodeCampは、コーディングの概念をWebブラウザー内で小さなチャンクに分割するだけでなく、各概念と、次のトピックに進む前に解決しなければならない関連する演習を組み合わせます。 この方法では、楽しいものだけをスキップすることはできません。 このサイトでは、学習しながらコードをデバッグする必要があります。

コーディングゲームは、プログラミングに夢中になるための楽しい方法でもあります。 殺す時間が1時間あれば、単純なHour of Codeゲームを試してみることができます。 さらに、多くの学校では既にMinecraft:Educational Editionを使用して、コーディングブロック、さらにはJavaScriptを使用したプログラミングの基礎を子供たちに教えています。 (Office 365 Educationアカウントをお持ちの場合、このバージョンのMinecraftを無料でダウンロードできます。)

あなたの履歴書に置くことができるより複雑なゲーム開発チュートリアルが必要ですか? CodinGameは、1日中ブロックをパンチングする気にならない場合、より年齢に適している可能性があります。

子供のおもちゃを試してください

子供がコーディングに夢中になるのと同じSTEAM / STEMのおもちゃやビデオゲームから大人は学べないと言うのは誰ですか? 結局のところ、これらの製品は、簡単に気を散らす子供たちを退屈させることなく、コーディングロジックと構文を教えるように設計されているため、大人のコーダーでさえも楽しく教育的であることがわかるでしょう。

ハードウェアとソフトウェアの関係をよりよく理解したい場合は、Raspberry Piを搭載したコンピューターを構築できるPiper Computer Kit 2をお楽しみください。 このDIYラップトップを使用すると、カスタムMinecraftストーリーモードチャレンジを通じてコーディングを学習したり、ドラッグアンドドロップBlockly言語を使用して物理コンピューティングを学習したり、インストール済みのレッスンから基本的なPythonを選択したりできます。

おそらくから独自のBB-8ドロイドを作成することはできませんが、SpheroのBOLTを使用してコードを作成することを学ぶことができます。 コンパニオンアプリを使用すると、スクラッチと呼ばれるドラッグアンドドロップコーディングブロックを使用してドロイドボールを制御したり、JavaScriptにレベルアップしてより高度な動きをプログラムしたりできます。

お気に入りのデバイス(およびアシスタント)の新しいトリックを教える

Amazon Echoのようなスマートホームデバイスはありますか? カスタマイズされたミニプログラムを作成して、デバイスのデジタルアシスタントからより多くの機能を引き出すことで、コーディングスキルを試すことができます。 AmazonのAlexaは、最新ニュースの見出しを読むなど、多くの基本的な音声コマンドの「スキル」を既に知っているかもしれませんが、Node.js、Java、Python、C#、またはGoでコーディングすることで、より複雑なタスクを教えることができます。 (または、もっと簡単なものから始めたい場合は、よりシンプルなAlexaスキルブループリントサイトをお試しください。)

コーディングへの関心がより限定的である可能性があります。たとえば、Raspberry Piでクールなプロジェクトを実行するのに十分なPythonを習得したい場合があります。 もしそうなら、他の人がそのウェブサイトで共有している多くのプロジェクトをチェックアウトすることにより、学習へのDIYアプローチを採用することができます。

既存のプロジェクトを再作成することにより、高度にカスタマイズ可能なデバイスの内部動作について詳しく知ることができます。 ミニコンピューターを使用する新しい方法を作成し、コードの世界をさらに掘り下げたいと思うかもしれません。 (少しでも手始めが必要な場合は、コースアーを通じてUCアーバインのThe Raspberry Pi PlatformおよびRaspberry Pi PlatformクラスのPythonプログラミングに登録することもできます。)

コーディングに関するビデオを見る

誰かがあなたにそれがどのように行われるかを見るのを見る方が簡単な場合があります。 現在、ほぼすべてのコーディング関連のトピックに関するあらゆる種類の教育ビデオを見つけることができます。コーディングインタビューでソリューションを共有している元Google社員、コーディングマラソンをライブストリーミングしているYouTube社員、および希望する任意の言語で特定のエラーをトラブルシューティングする方法を示すベテランプログラミングでさえもです。

CS Dojo、TheNetNin​​ja、ハーバードのCS50 YouTubeチャンネルをチェックすることをお勧めします。 完璧なコーディングビデオやチャンネルを検索する時間がない場合は、LinkedIn Learningの膨大なビデオライブラリをチェックして、専門家向けのチュートリアルを確認することもできます。 サービスの月額30ドルのサブスクリプション料金はくしゃみするものではありませんが、無制限の量のコンテンツやトピックを見ることができます。これにより、LinkedIn Learningは、面倒な制限のある他のオンデマンドオンラインクラスよりも優れた取引になります。

個人プロジェクトで練習する

修了証明書やコーディングワークショップをいくつ修了しても、またプログラミング言語をいくつ習得しても、プログラミングプロジェクトにはコーディングスキルの証明があります。 あなたの個人プロジェクトは、次のGoogleマップを作成するほど野心的である必要はありませんが、その範囲を絶えず改善および拡大するために、24時間年中無休で働きたいものでなければなりません。

小さく始めますが、大きく考えます。 プロジェクトには、現在ツールボックスにあるスキルが含まれている必要がありますが、そのビジョンを実現するために必要な将来の機能とスキルの計画も必要です。 いくつかのプロジェクトでコーディングスキルを適用しなければ、プロのコーディングギグを検討することすらできないので、計画と実践を開始してください。 (私たちのアドバイスですか?コーディングチョップを使用して、ゲームナイトの素晴らしいセットアップを構築してください。)

小さな勝利を祝う

コーディングはすべて細部にまでこだわるので、プログラミング教授の一人が言っているように、「小さな勝利を祝う」必要があるのです。 各要素を独自に機能させるには練習が必要です。また、コードの各行が残りのすべてで機能することをエラーなしで確認するための継続的なテストも必要です。 HTMLタグを閉じるような一見些細なことをしないと、より印象的で複雑なコードを書くのではなく、単純な構文エラーのデバッグにこだわるでしょう。

あなたは自分に忍耐する必要があります。 数か月の勉強やブートキャンプを数回行っただけで、次のコードを書くことを期待しないでください。 Webサイトでのエラーのない結婚式のRSVPフォームのコーディング、または単純で正確な数字予測ゲームの作成は、初心者にとってすでに重要な成果です。 行き詰まったら、あきらめないでください。 あなたはそれを見つけることができるあらゆる場所で絶対に助けを探すべきですが、燃え尽きを避けるためにいつ休憩を取るべきかも知っています。 そして、もう一度やり直してください。

Googleのエラーメッセージ

これがコーディングのアドバイスの最高の部分です。コードが壊れている理由がわからない場合は、いつでもオンラインで解決策を探すことができます。 結局、あなたが間違いを犯した最初の人ではないでしょうし、インターネット上の誰かがあなたの問題の解決策をすでに見つけていることは確かです。 エラーメッセージをGoogle(またはお好みの検索エンジン)に「コピーアンドペースト」し、フレーズ全体を引用符で囲んで、キーワードを検索するだけではなく、「Enter」を押してください。トリックはあなたを正しい答えに導きます。

それでも問題が解決しない場合は、Stack Overflow、Redditのプログラミングsubreddit、GitHubなどの開発者のフォーラムにいつでも質問を投稿できます。 友人やインターネットの見知らぬ人に電話しても痛いことはありません。

他の人のコードをハックする

他の人のコードをリバースエンジニアリングし、各行をテストしてその動作を確認すると、全体像をよりよく理解できます。 膨大な数のオープンソースコードのおかげで、他の誰かの(完璧な)作業を調べることで、何でも学ぶことができます。 インスピレーションが出て、あなたがいじっていたプログラムの一部を改善した場合、コミュニティとコードを共有することを忘れないでください。

メンターを取得する(または他の人に教える)

プログラミングコミュニティには、次世代のプログラマを支援してくれる人がたくさんいます。 Gitを使用してコーディングプロジェクトを管理する開発者向けのオンラインハングアウトであるGitHubは、オンラインコラボレーション用に設計されています。 開発者は、プロジェクトをホストして同僚と共有するだけでなく、コミュニティにコードフィードバックと一般的なアドバイスを提供します。

GitHubで役立つオンラインメンターを見つけたり、地元のコーディングMeetupイベントやハッカソンで他のベテラン開発者に会ったりすることができます。 プログラミングの経験を積んだら、他の人の質問に答えたり、学んだことを初心者に教えることもできます。これは、自分のことを本当に知っているかどうかを確認するための素晴らしいテストです。

コーディングブートキャンプに参加する

ブートキャンプのコーディングは物議を醸す可能性があります。多くのスキルを簡単に紹介し、経験を積むことができますが、新しいGoogleの仕事への黄金のチケットではないかもしれません。

プロになってフルタイムのデベロッパーになりたい場合、特に本物の人々が動機付けをする構造化された環境で最高の学習をする場合は、集中的かつ直接的なコーディングブートキャンプが役立ちます。 ただし、これらのタイプのブートキャンプは、参加するのに最も高価で時間のかかるものであることがよくあります。学費だけで15, 000ドル以上、さらに卒業までの数か月間の生活費を求めています。

幸いなことに、Flatiron SchoolやThe Grace Hopper Programなどの機関は、マイノリティやハイテクの女性などの過小評価されているグループのために、これらのブートキャンプをより手頃な価格にする奨学金や延期授業を提供しています。 オンラインおよび対面の多くのブートキャンプの包括的な内訳については、コースレポートをご覧ください。卒業生の詳細なレビューは、ブートキャンプがプログラミングの夢を実現するのに役立つかどうかを判断するのに役立ちます。