ベストアンサー
多くの人が私に質問します。プログラミングを一から学ぶ。この答えから、あなたはそれを行う方法を学びます。私は20年間プログラミングをしています。私はこのキャリアパスの開発に役立った私の経験と人々を共有しています。
答えはもともと私のブログに書かれていましたそして、Wykopで30000回の視聴と1000回の投票を受け取りました-redditのようなサイトを磨いてください。楽しんでください!
プログラミングを最初から学ぶ方法について、多くの人から質問があります。私は毎日そのようなコメントを読んでいます。たとえば、誰かが別の分野で働いていて、ソフトウェアテスターになりたいと思っています。または、彼/彼女はITで働いていますが、新しいレベルにジャンプしてプログラミングを開始したいと考えています。これらすべての人々には1つの共通点があります。彼らはプログラミングの旅を始めたいと思っています。しかし、この領域は非常に広いため、開始方法がわかりません。そして、誰もがそれを行う方法について他のことを話します。
この回答から、プログラミングを最初から始める方法を学びます。また、進行に役立ついくつかのアドバイスを受け取ります。それでは、始めましょう:
コーディング方法を学ぶには、次の手順に従う必要があります:
1。周りを見回す
現在、プログラミングは非常に広い領域です。ですから、周りを見回して、どの方向に進むことができるかを確認するのは良いことです。可能な方法を知っていれば、あなたにぴったりの方法を選ぶことができるからです。また、学習する必要のあるテクノロジーを選択するのにも役立ちます。
初心者向けに、ウェブサイトプログラマーについて説明します。これらは、たとえばWordpressやその他のコンテンツ管理システム(CMS)を使用し、スキルを活用して、クライアントが期待するようにWebサイトを調整する人々です。そのためには、そのような人々は主にJavaScript、HTML、CSSを知っている必要があります。
ウェブサイト開発者-これはおそらく世界で最も人気のある「プログラマー」の解釈です。
しかし、プログラミングWordpressのWebサイトだけではありません。それだけではありません。プログラミングはいくつかの現実に分かれています。まず、フロントエンドレルムの3つの例を示します。フロントエンドプログラミングは、ユーザー/クライアントが見るもののプログラミングです。インターフェース。簡単に言うと、
Webアプリプログラミング-ビジネスオンラインアプリ(銀行アプリや映画比較アプリなど)を構築します。これらは、特定のユーザーグループのニーズを満たす特定のアプリケーションです。それらは(Wordpressのように)コンテンツを管理するのではなく、プロセスを管理するのに役立ちます(つまり、人々が簡単に言えば、いくつかのタスクを完了できるようにするため)。 JavaScriptに加えて、HTMLおよびCSSプログラマーは、Webアプリプログラミングのためのいくつかの追加テクノロジーを知る必要があります。プロジェクトによって異なります。たとえば、SCSS、TypeScript、およびEmber、Angular、Vue、Reactのいずれかのフレームワークです。 (フレームワークは、ビルド機能を備えたアプリケーションのスケルトンです。)
デスクトップアプリのプログラミング-上記と同様ですが、たとえばWindowsシステムにインストールできるアプリケーションのプログラミングに関するものです。このグループは前のグループとは異なります。それは他の技術を使用しています。たとえば、WindowsのプログラミングではC#言語と.NETFrameworkを使用できます。
モバイルアプリのプログラミング-モバイルデバイスにインストールされたアプリの作成に関するものです。主にAndroidおよびiOSオペレーティングシステムを搭載したデバイス。 Androidのプログラミングは主にJavaプログラミング言語を使用し、iOSのプログラミングはSwift言語を使用します。システムごとに異なるフレームワークがあります。両方のシステムのフレームワークもあります。
これらはフロントエンドの実例でした。次に、バックエンドレルムに移りましょう。バックエンドは、多かれ少なかれ、何かをプログラミングすることであり、クライアント/ユーザーには見えませんが、システムが機能するために不可欠です:
データベースプログラミング- MySQLやMSSQLなどのデータベース。データベースは、多かれ少なかれ、高度なスプレッドシートです。したがって、データベースはより多くのデータを格納し、プログラムでそれを操作することができます。データを追加、削除、変更します。さらに、データを処理するさまざまな方法を設定できます。たとえば、不完全なデータを拒否したり、別のテーブルからデータを収集したりします。データベースシステムは、さまざまなSQL言語(たとえば、T-SQL for MSSQL)を使用します。この言語では、データに対するさまざまな操作をコーディングできます。 SQL言語を使用しないデータベースもあります。彼らは神秘的な名前を使用しています:NoSQL。
バックエンドプログラミング-バックエンド開発者はデータベースとフロントエンド間、または必要な異なるシステム間でデータを処理します協力する。ほとんどすべてのプログラミング言語は、バックエンドの目的で使用できます。ただし、バックエンドには特定のユースケースがあるため、フロントエンドとは異なる言語を使用する傾向があります。例:PHP、Ruby、Python、Javaだけでなく、JavaScipt。
ほとんどのプログラマーは、フロントエンド開発者とバックエンド開発者に分かれています。しかし、フルスタック開発者もいます。フルスタック開発者は、フロントエンドとバックエンドのテクノロジーを知っている人です。データベース、バックエンド、ユーザーインターフェースなど、アプリケーションをセットアップするためのすべての面倒を見ることができます。
しかし、これらはすべての領域ではありません。そして、そのような概要のほとんどでは、他の領域は省略されています。情報システムにデータを提供する、ますます高度なデバイス、センサーがあります。これらもプログラムする必要があります。これは組み込みプログラミングと呼ばれます。組み込みプログラミングは主にCおよびC ++言語で行われます。これらの言語は、プログラマーに低レベルの抽象化へのアクセスを提供するためです。これらの小さなデバイスのリソースを節約します。
プログラミングのもう1つの盛んな領域は、データ分析です。データ分析の開発者は、企業内の大規模なデータセットを使用し、それらに対して行われるビジネス上の結論のために結果を準備します。このようなプログラマーは、PythonやRなどのさまざまな言語セットを使用します(はい、これはプログラミング言語の名前であり、文字Rです。世界はどこに向かっているのでしょうか?)
もう1つの領域はレガシーです。プログラミング。レガシー開発者は、システムの構築に使用されたテクノロジーを知っていますが、現在は普及していません。これらは、機能する必要があるが、何年も前に構築されたレガシーシステムをサポートします。
他にも多くのプログラミングの実例があります。これらすべてについてここでは書きません。しかし、それらを見つけることは可能です。
これでこのポイントは終わりです。なぜそれがとても重要なのですか?興味のある分野がわかっている場合は、テクノロジーを選択できます。学ぶ必要があります。そして、これらの200よりもいくつかのテクノロジーを学ぶ方が簡単です。
興味のある分野をすでに知っていると仮定しましょう。次は何ですか?
2。テクノロジーを選択する
さらに先に進むには、学ぶべきテクノロジーについて十分な情報に基づいた決定を下す必要があります。しかし、正直なところ、それについて良いアドバイスを得るのは難しいです。誰かに聞いたり、勉強やブートキャンプに行ったりすることができます。しかし、いずれにせよ、あなたは次のことを学ぶことになります:a)人気のあるものb)あなたに教える人が知っていることc)答える人を使うもの。そして、しばしばそれは良い選択ではありません。しかし、良い知らせがあります。
地域で活動している企業がどのテクノロジーを使用しているか、興味があるかを読んでください。求人を検索し、どのテクノロジーが再発するかを確認してください。そこには20のテクノロジーがあるので、熱意を失ってはいけません。それはフィクションです。人々は後で仕事に必要とされないことを書きます。
私はしばしば、人々がこれについて少し知っていることを読んでいます。そして、彼らはまだプログラマーになる方法を知りません。それらは失われます。それは完全に真実です。プログラミングは非常に広い分野であり、すべてを学ぶことはできません。あなたは方向を選択し、それに固執する必要があります。そうすれば、成功するチャンスが増えます。
3。学習方法を選択してください
この点は非常に重要であり、その理由を説明します。開発者がどのように学ぶべきかについては、誰もが意見を持っています。あなたがオンラインで答えを探していたなら、あなたは正しいものがたくさんあるアイデアを見つけるでしょう。 YouTubeのビデオを使用するようにアドバイスします。他の人は本が行く方法であると言うでしょう。他の人はブートキャンプが最高だと言うでしょう。ソフトウェア開発者はドキュメントから学びます!一部の開発者はまた、大学教育は役に立たないと言います。私はそのような発言に悲しんでいます。
あなたは何が最善かわかりません。そしてそれは完全に自然なことです。誰もが異なることを言います。個人的には、電子ブックやビデオチュートリアルが好きなので、お勧めできます。しかし、これは適切でも役立つ答えでもありません。
実際には、どのように学ぶかは問題ではありません。あなたが学ぶ限り。そして、学校でどのように学んだか覚えていますか?それはどのように見えましたか?教えはあなたにこれの少し、それの少しを学ぶように頼みましたか。関係のないものは?いいえ。学校では複雑なことを学びます。あなたには関係のないもの。しかし、誰もがこれから少し覚えています。
それは、学校での学習が体系的かつ系統だったためです。ステップごとに。このシステムは、数百年の経験を通じて開発されました。あなたがそれが十分ではないと思うならば:あなた自身に尋ねてください:ポテトバッテリーを作る方法?このシステムはとても良いです!
あなたはプログラミングの学習に興味があります。自分でできる最善のことは、系統的で体系的な方法を選択することです。それでは、私たち自身に答えましょう。最も系統的で体系的な学習方法は何ですか?明らかにそれは高校教育です。高校の教員は、体系的かつ体系的な教育をよく知っています。難しいでしょうが、プログラミングを学ぶでしょう。
もう1つの学習方法は、本と本です。少し注意を払えば、あなたは物事を段階的に教える本を見つけるでしょう。簡単なものから難しいものまで。 AからZまで。しかし、読むのが好きである必要があります。
ビデオチュートリアルとオンラインコース-著者がそれを系統的に準備した場合、これらは素晴らしいことがあります-それは学習に役立ちます。特にあなたが見て学びたいのなら。
Bootcamp-集中的なプログラミングトレーニング。これからも恩恵を受けることができます。グループの人々と一緒に仕事をしたいのであれば、これは良い解決策です。
プログラミングを学ぶために、非体系的、非体系的、不完全な方法を使用しないことを知ってもらいたいだけです。 YouTubeビデオコースからトピックの50%を学んだと想像してみてください(無料だからです)。しかし、後の部分はありません。他のコースを検索します。しかし、他のコースでは、あなたが知らないことがあります。また、あなたが知っているいくつかのこと。そして、トピックはまったく異なる方法で説明されています。それはとても意地悪です!したがって、初心者向け:AからZまでのトピックをカバーするコンテンツ。
このポイントの終わりにすぐに到達したので、非常に重要な1つの問題にも気づきたいと思いました。私は人々が初心者に英語のコンテンツを使って学ぶようにアドバイスしていることを読みました。これらの人々は彼らが何をしているのか知りません。あなたが初心者のとき-あなたの人生を難しくしないでください。母国語のコンテンツがある場合は、それを使用してください。なぜ外国語でプログラミングを学ぶ必要があるのですか?全くのゴミです。また、英語を話している間はドイツ語の本からスペイン語を学び、日本を話している間はカナダの本からポーランド語を学ぶことができます。出来ますか?はい。しかし、なぜですか?
4。目標を設定する
仕事のキャリアを計画する際に、目標の設定は省略されることがよくあります。人々は、立ち止まるよりも1つのコースを学び始め、必然的に時間が経過する間にブートキャンプに行きます。数か月後、以前に学んだことを思い出せません。何かを学んだようですが、正確には何を達成しましたか?
学習を容易にするために、目標を設定することをお勧めします。たとえば、1か月で800ページの長い本を読むことを誓うことができます。または、6か月で大学院に進学するか、ジュニア開発者の仕事を見つけることになります。
目標を設定すると、すべてがうまくいきます。目標が人生を楽にするというのは、私たちの性質についての何かです。学習は簡単ではありません。プログラミングは簡単ではありません。プログラミングの学習はチャートから外れています。だからこそ、目標はとても重要です。そして、それに到達することからの満足は、さらなる仕事への動機を与えます。
5。体系的に学習する
すでに目標がある場合、次のステップは学習スケジュールを作成することです。毎日1時間。しかし、毎日、常に1時間です。また、別のビデオチュートリアルを受講したり記事を読んだりするのではなく、何か意味のあることを学ぶためです。
それを簡単にする方法はありますか?プログラミングを学ぶには、マインドフォーカスが必要です。多くの心の焦点。これを試してみてください。みんなに知らせましょう。午後6時にプログラミングを1時間学びますので、邪魔しないでください。電話のスイッチを切り、Facebookからログアウトします。義理の両親に子供を与える。隣人に犬をあげましょう。
どれだけ学ぶか観察してください!プログラミングの理解を実際に把握するには、世界から自分を切り離す必要があります。
6。自分でコーディングする
LinkedInですばらしい初心者向けソフトウェア開発者をフォローしています。彼女はプログラミングを練習するための素晴らしい方法を見つけました。彼女は毎日、何かをコーディングするという目標を掲げています。例:ある日:単純な電卓。翌日:映画の表紙のあるシンプルなページ。彼女は自分がしたことを使ってアニメーションGIFを作成し、LinkedInに配置します。彼女は日中に学んだことを書いています。私は彼女をフォローするのが大好きです。彼女はいくつかの素晴らしいミニプロジェクトを作成しています。これに加えて、初期の頃、私は彼女がしていることもしました。私が知っているすべての優れたソフトウェア開発者がしたこと。タスクの考案とプログラミング。これがソフトウェア開発者になる方法です。
もちろん、勉強、仕事、ブートキャンプへの参加、またはサンプルタスクのある本を持っているときは簡単です。自分でタスクを理解する必要がないからです。これも良い方法です。しかし、そのような作業が退屈な場合もあります。快適ゾーンの外に出ることを強制しないでください。そして、あなたが自分でタスクを理解した場合はどうなりますか?いくつかの障害にぶつかるよりも、それはあなたがあなたの練習をさらに進めるために何を学ぶべきかを特定するでしょう。
7。助けを求める
問題について話しているので。プログラミングの初期の頃に問題があったことを明確にするのは難しいです。たとえば、アプリケーションでバグが発生した場合です。問題を言葉に翻訳する方法は?それを求める方法は?時々とても難しいので、人々はDuckDuckGo検索にどのフレーズを入れるべきかわかりません。数年前はもっと簡単でした。 StackOverflowとサポートグループがあり、そこで質問をすることができました。他の人からの助けを頼りにすることができます。
今日、「インターネットを検索する」、「これは以前に尋ねられた」、「もう一度」などの答えに直面する可能性があります。これはイライラします。残念ながら。インターネットは答えでいっぱいです。高度なソフトウェア開発者が理解していないのは、初心者プログラマーの場合、問題に名前を付けるのは難しいということです。彼らがまったく同じ問題を抱えていたとしても!私はあなたにこれを保証することができます!
したがって、私はあなたに質問をすることを強く勧めます。ソフトウェア開発者にとってインターネット上で素敵な場所を見つけるか、メンターを見つけてください。そして、尋ねる尋ねる。時々あなたはためらいにつまずくでしょう。しかし、それはあなたを失望させません。もしそうなら、より良い他の場所を見つけてください。
あなたが尋ねるほど、あなたが問題を抱えていることを明確にすることがより簡単になります。時間が経つにつれて、あなたの質問はどんどん良くなり、答えはどんどん速く現れます。そして後で、適切な質問を作成するだけでいくつかの問題を解決できることがわかります。
8。仕事をすばやく見つける
私はよく、人々が何かを学ぶまで仕事の検索を延期することを読みます。そして半年が過ぎます。ソフトウェア開発は、常に知識を更新する必要がある分野です。必要な3〜4つのテクノロジーを学んだとしましょう。あなたは仕事を探し始め、トラブルに巻き込まれます。あなたは数ヶ月間仕事を探すことができました!そして、それをしている間、あなたはあなたが学んだことの半分を忘れるでしょう。
だから私のアドバイスは、あなたがあなたの学習パスの途中で多かれ少なかれ仕事を探し始めるべきであるということです。いくつかの正当な理由があります。まず第一に、あなたがインターンのポジション、またはジュニアの仕事をしている場合、あなたの雇用主はあなたがほとんど何も知らないと仮定します。第二に、採用プロセス自体に時間がかかります。履歴書を微調整する前に、オンラインで利用できる既成のものを学ぶ前に、テストの質問の時間が経過します。あなたがジッターなしであなたの募集の話を研ぎ澄ます間、それは通過します。仕事を見つけることもあなたが学ぶ必要があることです。
それで、学習パスの途中で仕事を探し始めます。 CVを送信し、会議をスケジュールし、それに慣れます。技術的な準備が募集の準備と一致し、遅れが生じることはありません。
9。より複雑なタスクを依頼する
これで、仕事のポジションができました。しかし、プログラミングの最大の罠はあなたの前にあります。あなたには仕事があるので、本を棚に置いて、求められていることをすることができます。
これはそうではありません!多くの場合、インターン/ジュニアは複雑なタスクを実行するように求められませんが、非常に簡単であることに注意してください。あなたはすぐに気付くでしょう、これらは完了するのにますます時間がかからず、退屈になり始めます。あなたがそれについて何もしないなら、あなたは時間を失います。あなたは新しいことを学ぶことができます。輪になって走り回らないでください。
その上で、雇用主はインターン/ジュニアが静止していることを確認します。私は雇用主です、それは空と同じくらい澄んでいます。そして、誰も時代を超越したインターネット/ジュニアを望んでいません。
それで、あなたが見たとき、あなたは良くなっています、より複雑な仕事を上司に頼んでください。彼/彼女はあなたにもっと複雑なものを与えることを知っているべきです。これは、仕事中に自分自身を学び、成長し続けるために重要です。
インターン/ジュニアとして、あなたはたくさん、もっとたくさん学ぶ必要があります。インターン/ジュニアのポジションは彼らに何も与えず、何も学ばなかったと言うインターネット上のこれらの人の一人になりたくないと私は100%確信しています。彼らはそれ以上進みたくなかったので、学びませんでした。彼らは彼らと彼らの雇用者の時間を無駄にします。
10。新しいテクノロジーをマスターする
プログラミングは素晴らしい分野ですが、常に変化しています。あなたが今日学んだことは、1年で時代遅れになります。そして、5で廃止されました。仕事を見つけて、それに慣れたら、何か新しいことをマスターしてください。スキルを伸ばしましょう。専門能力開発にとらわれないでください。勉強をやめたら、戻る価値があるかもしれません。ブートキャンプに参加し、本を読み、オンラインコースに参加します。テクノロジーを最新の状態に保つことができるものは何でも。
更新:プログラミングメソッドを記憶したい場合は、Summon TheJSONプロジェクトを探してください。現在、JavaScriptプログラマー向けのデッキがあります。詳細については、こちらをご覧ください: JSONを呼び出す:JSデッキ
プログラミングを最初から始めるために必要なことはこれだけです。これは本当に長い記事でした、そして私はあなたがそれの終わりに達したことに本当に驚いています。 99%の人がそうしなかったと思います。あなたはソフトウェア開発者になることを気にかけているようです。思いやりは成功の99%です。幸運を祈ります。プログラミングは素晴らしく、専門家として多くの満足をもたらします。心を緩めないでください。続ける。ステップバイステップ。
英語は私の母国語ではありません。答えに間違いを見つけた場合は、訂正してください。あなたは答えに言及されます。ありがとう!
回答
良いスタートは、プログラミングを愛する方法を見つけることです。私が手伝っていた新しいプログラマーからの引用:
GASP IT WORKED IT WORKED IT WORKEDどうやってこの気持ちに酔いしれるのか
彼女は前の1時間を手に入れようとしていたゲーム内の色を変更するオブジェクトとその色が変更されたばかりです。
コードを書くことは、実際に何かをする魔法の言葉を話すようなものです。それは魅力的で、おそらく少し中毒性があります。それも難しいです。これらの小さなモチベーションの瞬間を見つけることは、何か難しいことを学ぶ必要があるときに非常に役立ちます。可能なことの記憶は、退屈なことをやり遂げるのに役立ちます。
それでも、そこにたどり着くには、プログラミングを楽しく創造的に体験する必要があります。いくつかのアイデアを次に示します。
- StarCraft(1または2)レベルのエディターを入手して、トリガーの使用方法を理解します。私はStarCraftマップをハッキングするのに多くの幸せな時間を費やしました。それを使用して、ゲーム内で驚くほど複雑なゲームを書くことができます。
- MineCraftのすべてのレッドストーンの仕組みを理解し、自分で構築してください。ばかげたマシン。MineCraftに新しい機能を追加するmodを作成することも人気がありますが、試す前にいくつかの基本を学びます。チュートリアル(基本的な改造-Minecraft Forge )すでにJavaを知っていると、はるかに理解しやすくなります。
- Factorioですばらしいものを構築する方法を理解してください(警告:以下のビデオはばかげています。すぐにこれを行うことを期待しないでください)。 Factorioには、開発者がサポートするかなり完全な改造API(改造チュートリアル)もありますが、それを試す前に、さらにいくつかの基本を学びたいと思うかもしれません。
- スクラッチをダウンロードして、いくつかの簡単なゲームを作成します(この記事では、他の多くの教育用プログラミング言語についても説明しています)。 Scratchは、プログラミングをパズルのピースのように扱い、動作を構築するために組み合わせます。これは、幼い子供が少しの労力で作業プログラムを作成できるほど単純です。補助輪を使用したプログラミングのようなものです。
画像クレジット:生涯幼稚園グループMITメディアラボ。
- 「21日でXを学ぶ」本の1つを見つけて、それを活用してください。派手でも徹底的でもありませんが、これらの他のアイデアのいくつかが可能になるのに十分な基盤を提供できます。
- クラスに参加します。OK、ブーイングですが、成績を上げるプレッシャーがあることがわかりました。難しい概念に取り組むように私を促しました。プログラミングを学びたいと確信している場合にのみこれをお勧めします。クラスは情報を脳に押し込むのに優れています。しかし、あなたをやる気にさせるのはかなり苦手です。クラスを受講することの最良の部分は、彼らが「あなたが存在するとは想像もしなかったであろうことについてあなたに教えるでしょう。存在を知らない「自分で教える」ことはできません。
- プログラムを現実の世界に影響を与えたいですか? トップ10のKickassArduinoプロジェクトのようなマイクロコントローラーを使用していくつかのプロジェクトを行うことを検討してください。 Arduinoが威圧的すぎる場合は、最初にレゴマインドストームを試してみることをお勧めします。
セキュリティシステム?ロボット?愚かな素晴らしいクリスマスライト?これはあなたのデバイスです。 Arduino からの画像。
- Game Maker( Yoyo Games )は、単純なビデオゲームのための非常に優れた開発環境です。 Scratchよりも高度で、StarCraftのマップエディターのトリガーエディターよりも深くなっています。それを使ってさまざまな2Dビデオゲームを作成することが可能であり、商業的に販売するのに十分なものを作成することも可能です。
- 3Dに移行する場合は、Unity( Unity-ゲームエンジン)は、まともな品質の3Dゲームエンジンです。 Game Makerよりも少し多くのプログラミングスキルが必要であり、アセットを作成するための何らかの方法が必要ですが、かなりハイエンドのゲームを作成するのに十分強力です。
- デスクトップまたはラップトップにはすでに含まれています中途半端な開発環境:Webブラウザ。自分のハードドライブにWebページを作成する場合は、Webブラウザで開くことができます。そのWebページにJavaScriptが含まれている場合は、ブラウザで実行されます。学習を開始する必要はありません。他のものをダウンロードまたはインストールする必要があります。 HTML5ゲームチュートリアル-HTML5キャンバスとJqueryを使用してスネークゲームを作成するは、基本的なゲームの作成方法の面白いウォークスルーです。
- RoboZZleオンラインパズルゲームのプレイ方法を学びましょう。私がプレイしたすべてのプログラミングゲームの中で、これは間違いなく最も深いものです。ほとんどのゲームは変数とオブジェクトについてたくさん教えてくれますが、これは再帰について深く考えることを教えてくれます。ラムダ計算は、「中程度から難しいRobozzleパズルをいくつか倒したことがある場合は、漠然と馴染みがあるはずです。
- VisualStudioのコミュニティバージョンをダウンロードします。これはプロ級のツールであり、最初のプログラムを実行するのは難しいですが、十分に理解すれば、何でも作成できます。Macを使用している場合、同等のものは XCode です。
これらのアイデアのいくつかがあなたを動かしてくれることを願っています。 最終的には、上手くなりたい場合は、教科書を割って正式な勉強をする必要がありますが、の理由を見つけた方がうまくいくと思います。 最初。