Java プログラマーへの学習の提案
この部分は、実際に今日の焦点です。グループ内の多くの友人から寄せられた質問、つまり、LZ はどのようにして Java を学びますか? に答えるために使用されます。 ?、いくつか提案をいただけますか?
今日のLZは実践的な情報について話しますので、学習方法やテクニックについてではなく、各段階で学ぶべき内容やいくつかの本について直接話しましょう。このパートの内容は、Java にキャリアを切り替えたい一部の学生にも当てはまります。
皆さんに読んでいただく前に、LZ は 2 つの点を指摘しておきたいと思います。
1. LZ自身がJavaバックエンド開発者であるため、推奨学習内容はJava WebおよびJavaバックエンド開発のルートとなっており、Java WebおよびJavaバックエンド開発者ではない学生は学習アイデアを参考にしてください。適当にコピーしないでください。
2. 以下の [パート 1] の推奨コンテンツは、できるだけ早く仕事ができる Java 開発者になることを目的としており、失業中で Java への移行を準備している学生に適しています。学校の学生の場合は、以下の学習を検討する前に、必ず基礎 (コンピュータ システム、アルゴリズム、コンパイル原理など) を学習してください。
パート 1: 現役の学生や Java に切り替える準備をしている学生など、まだ Java の作業を行ったことのない学生向け。
1. Java Basics
まず、学ぶべき基本的な Java チュートリアルを見つけてください。ここでは、基本的なビデオ チュートリアルが多数ある QQ グループ: 159610322 をお勧めします。
Java の基本を学ぶときは、当たり前のことを書き出して実行してみると、そうではないことに気づくことがよくあります。信じられませんが、試してみてください。
上記の内容を学習すると、Java の基本を理解できるようになります。Java 言語でいくつかの簡単なプログラムを作成でき、メモ帳などの最も簡単なエディターを使用できます。
現時点では、急いで次の部分に進まないでください。いくつかのプログラムを作成して、これらの基本的な内容にできるだけ慣れてください。
2. Web開発
数日間プログラムを書いていると、単純な計算機の実装やファイルの読み込みなど、書いた内容が役に立たないように思えて混乱することがよくあります。この時期は自分が面白いと思うものを書くことを学ぶ必要があるので、より多くの知識を学ぶ必要があります。
これらの内容は主にWeb開発に関するもので、HTML/CSS/JS(フロントエンドページ)、Servlet/JSP(J2EE)、MySQL(データベース)関連の知識が含まれます。
学習する順序は前から後ろにあるので、最初に学習するのはHTML/CSS/JS(フロントエンドページ)です。この部分は上記のrunoob Webサイトで見つけることができます。自分でいくつかのページを書いてみることもできますし、もちろん、それを最も美しくするために最善を尽くすこともできます。コンテンツのこの部分は理論的にはバックエンド Java にとって特に重要ではありませんが、少なくとも自分でいくつかの簡単なページを作成できるレベルに達する必要があります。
次に学習する必要があるのは、サーブレット/JSP (J2EE) 部分です。この部分は、Java バックエンド開発で非常に習熟する必要がある部分です。そのため、この部分は 3 つの部分の中で最もエネルギーを必要とします。現時点では、メモ帳の代わりに開発ツールの使用方法を学びたい場合は、Eclipse を選択できます。
Eclipse をダウンロードしてインストールしたら、ビデオのチュートリアルを段階的に実行し、さらに実行してください。サーブレット/JSP ビデオの選択に関しては、Ma Soldier のビデオが業界で認められているため、皆様にお勧めします。もちろん、LZ 自身は彼のビデオを見ていないので、より良い選択がある場合は、LZ に干渉されずに自分の意見を貫くことができます。
当初LZも教育ビデオを公開する予定でしたが、時間の問題で断念しました。ただし、ビデオの視聴中に問題が発生した場合は、LZ のコミュニケーション グループに来て質問するか、Douyu にアクセスして LZ のライブ ブロードキャストを視聴して質問してください。ライブ ブロードキャストのアドレスとグループ番号は、左側にあります。 LZの個人ブログです。
最後のステップは、データベースの使用方法を学ぶことです。MySQL は優れた入門選択であり、Java 分野の主流のリレーショナル データベースは MySQL です。この部分は通常、Servlet/Jsp を学習する際に明らかになります。JDBC 部分はデータベース関連の部分です。 JDBC を使用してデータベースを操作する方法を学ぶだけでなく、navicat や sqlyog などのデータベース クライアント ツールの使用方法も学ぶ必要があります。2 つのうちの 1 つを選択してください。
3. 開発フレームワーク
上記の内容を学んだ後でも、現時点では作業に参加するのに十分ではなく、まだ学習を続ける必要があります。開発効率を向上させるために、企業はいくつかの Java Web フレームワークを使用するため、開発フレームワークもいくつか学ぶ必要があります。
現在、より主流なのは SSM フレームワーク、つまり spring、springmvc、mybatis です。これら 3 つのフレームワークを構築し、それらを使用して Web プロジェクトを簡単に追加、削除、変更、クエリする方法を学ぶ必要があります。これらの構成が何を意味するのか、なぜそれを行う必要があるのかを理解する必要はありません。後で学習できます。ただし、Web フレームワークを構築するには、これら 3 つをすぐに使用できる必要があります。最初の構築プロセスを記録できます。必ず使用します。
SSM を構築する過程で、maven と呼ばれるツールに頻繁に触れる可能性があることにも言及したいと思います。このツールは今後の作業でほぼ使用することになるツールでもあるため、SSM を構築しながら Maven について学ぶこともできます。現段階では、インターネット上で Maven の基本的な使い方を学ぶだけで済みます。仕事の経験が増えるにつれて、徐々にハイエンドの使い方に触れるようになります。
SSM フレームワークを学ぶためのアドレスをお勧めします。その中にあります。
4. 仕事を見つける
開発フレームワークの学習を終えたら、学校に通っている場合はインターンシップ、卒業している場合はフルタイムの仕事を見つける必要があります。同時に、就職活動中に勉強をやめるべきではありません。正確に言うと、将来勉強をやめるべきではありません。
あなたは上記のコンテンツの使い方を急いで学んだだけですが、インターネットはあなたの最も重要な教師です。
パート2:社会人になって1年未満の学生向け。
おめでとうございます。この時点で、あなたはすでに Java のジョブを獲得しました。この段階は成長が非常に早く、残業も多くなる時期です。
しかし、残業するからといってリラックスできるわけではありません。業界に入った瞬間から学び続けなければならない、という LZ の言葉を常に思い出してください。今年中には少なくとも「Java Programming Thoughts」という本を読む必要があります。この本の内容は、Java をより深く理解するのに役立つものであり、Java の基礎のアップグレード版です。
この本はとても分厚いです。LZ はこの本を読むのに丸 3 か月かかりました。普通のスピードなら半年くらいで終わるはずです。 LZ では、1 年以内にこの本を読み終える限り、それほど高い要件はありません。もちろん、LZが読んだ後に言ったのは、一度読むのではなく、完全に吸収するということですので、内容によっては複数回読んでも構いません。
全体として、この段階での中心的な学習アイデアは、職場で実践し、Java の基本をより深く理解することです。
その3:社会人1~2年目の学生向け。
この期間で、学生たちはすでにJavaについての理解を深めています。しかし、オブジェクト指向の経験はまだ浅く、プログラミングする際には機能を完成させるレベルに留まり、設計の問題を考慮することはほとんどありません。
この時点で、デザインパターンが来ます。当時、LZ は「Dahua Design Patterns」という本を読んで、デザインパターンのブログの完全版を書きました。したがって、LZ では、長くても 1 年以内にブログを開始する必要があり、デザイン パターンがブログの始まりとなります。
LZ が提示するものは基本的に最低限の要件であることを覚えておいてください。そうでない場合は、5 年後に自分より給料が高い人を羨んだり、入社した人を羨んだりすべきではありません。とある会社。
今年は、デザインパターンをよく知る必要があり、「Dahua デザインパターン」があなたの出発点になります。もちろん、LZ の個人ブログにアクセスして学ぶこともできます。アドレスは次のとおりです。
さらに、今年の課題はデザインパターンだけではありません。コード記述の最適化に関する本も読む必要があります。たとえば、「既存のコードの設計を改善するためのリファクタリング」や「効果的な Java」などです。
全体として、この段階での中心的なタスクは、コーディング能力を向上させ、エレガントなコードを書けるようになることです。
その4:2〜3年働いている学生向け
この時点ですでにとても上手になっていると感じている学生もいますので、ゆっくりとリラックスし始めます。覚えておいてください、あなたはまだずっと若いのです。
この段階で必ず読んでおくべき本があります。それは「Java 仮想マシンの詳細」です。この本は間違いなく Java 開発者にとって最も重要な本です。 LZ の目には、この本は「Java プログラミングの思想」よりもさらに重要です。
この本の内容は、Java 仮想マシンを包括的に理解するのに役立ちます。この段階では、Java が JVM 上で実行されることをすでに知っている必要があります。したがって、JVM について知らない理由はありません。 LZ が JVM シリーズについて以前に書いたアドレスを参照してください。
さらに、過去 2 年間の仕事の中で、多かれ少なかれ同時実行性にさらされてきたはずです。この時点で、並行処理関連の知識をより深く理解する必要があります。この部分については、LZ は「Java Concurrent Programming in Practice」という書籍をお勧めします。この本を読めば、並行性の部分は基本的に理解できます。
同時に、この段階でしなければならないことはたくさんあります。この時点では、使用しているフレームワークと Java クラス ライブラリについての理解を深める必要があります。したがって、使用しているフレームワークのソース コードを含め、JDK の一部のクラスのソース コードを確認する必要があります。
これらのソース コードを理解するための前提条件は、デザイン パターンをよく理解している必要があります。そうしないと、ソースコードを見るときに、「なぜこのコードはこのように書かれているのか?」という疑問が常に発生します。冗長に見えるのに、なぜこのインターフェイスを定義するのでしょうか?
これらの学習プロセスは連動していることもわかりますが、どこかの段階で失敗すると、本当についていけなくなるか、一歩ずつ速度が落ちてしまいます。そして、LZ は、現段階で、ここに記載されている以上のことを学んだことを皆さんに伝えることに非常に責任があります。したがって、LZ が述べたことは最小限の要件にすぎないとは考えないでください。LZ だけでなく、多くの人がこの記事の範囲よりもはるかに多くのことをこの期間に学びました。
このペースについていけないと、数年後、プログラマーの市場が良くないと、おそらく他の人よりも給料が低く、会社も他の人より良くないことになるでしょう。また、仕事をまったく見つけることができなくなります。
つまり、この段階で行う必要があるのは、基礎となる Java および Java クラス ライブラリを深く理解することです (たとえば、同時実行に関する書籍は、Java 同時実行パッケージ java.concurrent の内容です)。 、つまり、JVM と JDK の関連コンテンツです。また、使用しているフレームワークをより深く理解する必要があります。ソースコードを読むか、公式ドキュメントを読むことをお勧めします。
また、2年生の段階でも取り入れるべき学習方法がもう一つあり、それは車輪を作ることです。
「車輪の再発明をするな」という議論には耳を貸さないでください。それは企業が時間とコストを節約するためにでっちあげたものです。あなたが作成する車輪はすでに存在している可能性があり、一般に、あなたが作成する車輪は既存の車輪ほど優れていないため、車輪の再発明は他の人にとって価値がない可能性があります。しかし、他人にとって価値がないからといって、自分にとって価値がないわけではありません。
ホイールを作る工程は一からの工程です。このプロセスでは、コーディング能力をテストするだけでなく、ホイールをスケーラブルで堅牢にする必要もあります。
そして、ホイールを作る過程では、さまざまな問題に遭遇し、それが学ぶ機会となることがよくあります。ホイールを組み立ててみると、実際に多くのことを達成したことに必ず気づくでしょう。
したがって、この段階では、上記の JVM、JDK、およびフレームワークのソース コードを理解することに加えて、他の人の優れたソース コードに基づいて想像できるホイールを構築することも求められます。
パート 5: 3 ~ 4 年働いている学生
この段階の学生が改善することはすでに困難であり、この段階での学習はより多様化していることがよくあります。
過去 3 年間で、皆さんは多かれ少なかれ、ビッグ データ、分散キャッシュ、分散メッセージング サービス、分散コンピューティング、ソフト ロード バランシングなどの他のテクノロジにさらされてきたはずだからです。これらのテクノロジーのいずれかに習熟していれば、今後の面接で大きなアドバンテージとなるため、特定のテクノロジーに興味がある場合は、この時点でそれについて深く学ぶことができます。テクノロジーは仕事で使用しているものである必要はありませんが、関連性がなければなりません。
そして、新しい技術を研究するときは、無計画に行動しないようにしてください。今日、一部の学生はビッグデータに取り組み、Hadoop や Hbase などに取り組みました。しばらくして、退屈に感じて、Redis などの分散キャッシュについて勉強し始めました。それからしばらくして、MapReduce や Storm などの分散コンピューティングを再び勉強し始めました。
結局、私はすべてを知っているような気がして、ビッグデータ、分散キャッシュ、分散コンピューティングについて知っていると履歴書で自慢しましたが、実際にはどれも表面的なものにすぎませんでした。いざとなったら、面接官は何気ない質問でそれを理解してくれるでしょう。
プログラマーとして、日常的に多くのテクノロジーにさらされる可能性があることを必ず覚えておいてください。しかし、テクノロジーを自分の利点にしたいのであれば、このテクノロジーに対するあなたの理解は、ほとんどの才能のある人よりも優れている必要があります。 。 わかりました。
したがって、この段階では、過去 3 年間の内容を単純に学習することはできませんが、これまでの学習が十分に深まっていない場合でも、この時点で自分の長所を構築することをさらに考慮する必要があります。そしてそれは違いとも言えます。
違いを理解するのは難しいことではなく、自分をユニークにすることだと私は信じています。最初の 3 年間の学習は、基本的に資格のある Java 開発者になるには十分ですが、優れた Java 開発者になるにはまだ程遠いです。
いわゆる優秀とは、他の人ができないことができることを意味します。最初の 3 年間で学んだことは、数年間 Java 開発を行っている多くの人が習得できます。したがって、自分自身を差別化するには、別の方法を見つけて深く勉強する方向を見つけ、将来、分散コンピューティングの分野の専門家、専門家など、この分野の専門家になれることを期待する必要があります。ビッグデータ分野、同時実行性などの分野の専門家。
さらに、違いを確立することに加えて、基本的な不足を補う必要もあります。これまで、LZ は基本的な知識について言及していませんでした。その理由は、基礎を早く学びすぎると混乱しやすいだけでなく、混乱したときに心理的な影を引き起こしやすく、将来これらの基礎を学びたくないからです。しかし、たとえば、分散コンピューティングを学びたい場合、アルゴリズムを理解していない場合は、それを試してみてはいかがでしょうか。たとえば、分散キャッシュを実行したいが、コンピューター システムのメモリがわからない場合、どうすればキャッシュを実行できるでしょうか?
あなたの基礎がすでに非常に強固である場合は、おめでとうございます。これまでの仕事でこれらの基礎の助けを十分に理解していると思います。しかし、LZ は、ほとんどの人は、専攻を卒業した人であっても、アルゴリズム、コンピュータ システムの原理、コンパイルの原理など、元々の基礎知識がどれほど強いかを敢えて語ろうとしないと考えています。
しかし、誰にとっても時間は限られており、これらの基本的な本をそれぞれ読むには1年半かかりますので、やはり選択をしなければなりません。アートは負担ではありませんが、問題は、アートには代償が伴い、それには時間とエネルギーを費やす必要があり、LZ は個人的に同じコストで最大の利益を得ることを好みます。
まず、LZが強く推奨する基本書籍は『コンピュータシステムの徹底理解』『Tcp/IP詳解 上・下・下巻』『データの構造とアルゴリズム』の3冊です。その中に TCP/IP に関する書籍が 3 冊ありますが、ここではこの 3 冊を 1 つの大きな書籍として扱います。
これら 3 冊の本は、それぞれ 3 つのタイプの人に適しています。「コンピュータ システムの詳細」は、Java Web 開発と APP バックエンド開発に従事している人に適しています。 『TCP/IP 詳解 上・下・下巻』は、例えば netty を使って開発する場合、TCP/IP についての深い理解が必要となる方に適しています。 『データ構造とアルゴリズム』という本は、先ほど述べた分散コンピューティングなどのコンピューティングの研究を行う人に適しています。
さらに、LZ は、ここで述べた適合性は、他の 2 冊の本があなたにとって役に立たないという意味ではないことを強調したいと思います。たとえば、Java Web および APP のバックエンド開発を行う場合は、『Tcp/IP 詳解 第 1、2、3 巻』という書籍も役立ちます。これはあくまで優先順位ですので、時間があれば3冊を集中的に読んでいただければと思います。ただし、時間が限られている場合は、最も役立つ本を選んで最初に読んでください。
理論的に言えば、今年この 3 冊のうち 1 冊を集中的に読むことができれば、非常に強力になります。基礎とこれまでの実務経験を活かして、自分の分野を開拓することができます。
今年は、自分の分野を計画し、自分の利点を確立し、違いを生み出す必要があります。自分の分野について十分に理解していないと、長く仕事をすればするほど、より多くのテクノロジーにさらされることになり、簡単にテクノロジーの海に溺れてしまうようです。より多くのテクノロジーにさらされると、より多くのテクノロジーを使用するようになりますが、メリットはありません。
学生の中には「LZ、自分の専門分野がわからない?どうすればいいの?」と尋ねる人もいるかもしれません
このような人に対して、LZはこう言いたいだけです。なぜ?私があなたのために勉強したらどうですか?』
パート6:4〜5年間働いている学生
昨年の経験を経て、あなたはすでに勉強している分野での地位を確立していると思います。特定の洞察があれば、この時点で技術的なボトルネックが発生しているはずです。
今は自分のスキルを向上させるために急ぐ必要はありません。自分の経歴を向上させるために、いくつかの有名な企業に行って、より多くの人に影響を与えるようにしてください。もちろん、Github にアクセスして独自のオープンソース プロジェクトを作成し、独自の製品を構築することもできます。このオープンソース プロジェクトは、これまでのホイール作成とは異なり、他の人にとって真に価値のあるホイールを作成するために全力を尽くす必要があります。
技術学習のこの段階ではボトルネックに遭遇しやすく、学術研究に特化していない限り、ある程度のレベルに達するとさらに深めても効果が本当に小さいことが多いです。残念ながら、ほとんどのプログラマーはこれを行うことができません。
現時点で、影響力を向上させることは、技術的なボトルネックに遭遇しやすいからだけでなく、影響力によってより多くの機会を生み出すことができるからでもあります。プログラマーは、ある意味、有名人に似ています。優れたテレビシリーズや映画が、スターのグループを生み出すこともあります。
例えば、中国ではタオバオ、アリペイ、QQ、百度、WeChatなどの人気プロジェクトがいくつかあります。これらのプロジェクトごとにプログラマーのグループが作成されました。 LZ は、あなたがここのプロジェクトの中心的な開発者である場合、そのようなタイトルを持っているだけですでに大きな利点があると言います。さらに重要なのは、タイトルは結局のところ単なるタイトルであり、この種のプロジェクトを行う場合、それはあなたの経験にとって非常に強力なものでなければなりません。
そして、そのようなプロジェクトに参加したいのであれば、運に頼るだけでなく、影響力も非常に重要な手段です。例えば、分散コンピューティングの分野で一定の影響力を持っている場合、分散コンピューティングに関連する良いプロジェクトがあれば、相手も誘ってくれる可能性が高いです。たとえ誰かに誘われなかったとしても、あなたが率先して面接に行ったとしても、相手がこの分野におけるあなたの影響力を知っていれば、それは間違いなく大きな役割を果たし、その役割はあなたの現在の技術力を超える可能性さえあります。
ということで、現段階でのあなたの最大の課題は、自分の影響力を高め、今後10年間の社会人キャリアにおけるその日に備えることです。自分の影響力と過去に蓄積したスキルを頼りに素晴らしいプロジェクトに参加できれば、今後 5 年間は成功するでしょう。
もちろん、LZ は今、十分に準備が整っており、プログラマになってまだ 4 年半しか経っていません。したがって、4 ~ 5 年の部分に関しては、LZ の意見が正しいとは限りません。誰にも適さない人間。ですので、皆さんもご自身の判断で今年をどのように過ごすか決めていただければと思います。
結論
この記事は全体的に非常に長いですが、実際には主に2つの部分について話します。1つは社会採用面接の準備で、もう1つはJavaの学習です。キャリア。
この二つの部分については、既にLZが自身の意見を述べていますが、繰り返しになりますが、誰もが知識を吸収する際には、本質を抽出し、カスを取り除く能力が必要です。 LZ の言ったことには正しいものもあれば、間違っているものもあり、自分に適しているものもあれば、適していないものもあるかもしれません。それは自分で判断する必要があります。
実際、それはあなたの人生や仕事においても同じで、あなたの周りには好きな人もいれば嫌いな人もいます。でも、実は好きな人にも欠点があるし、嫌いな人にも長所があるのです。嫌いな人の良いところを学ぶ必要があり、決して彼らを殴り殺すことはしないでください。そうすることで、学び、成長するための多くの機会が失われるだけです。
まあ、ここまでは言っておきますが、この記事がプログラマー、あるいはこれからプログラマーになろうとしている方のお役に立てれば幸いです。
Javaを学習している学生の皆さん、注意してください! ! !
学習プロセス中に問題が発生した場合、または学習リソースを入手したい場合は、Java 学習交換グループ (159610322) に参加してください。一緒に Java を学びましょう!
以上が学習のさまざまな段階における Java プログラマーへの提案の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。