web-dev-qa-db-ja.com

Python、PHPおよびJavaScriptのエキスパートになる方法は?

だから私は今から約9か月間プログラミングをしていて、いくつかのPython、いくつかのPHPおよびいくつかのJavascriptを独学しました。

これらの言語でもっと上達したいのですが、何かをハックすることはできますが、OOPや、リストを最も効果的な方法で使用するなど、多くのことは私には失われています。

「エキスパート」プログラマになるための最良の方法は何ですか?それは言語のニュアンスに依存していますか、それともより一般的ですか?一緒に勉強すべき数学はありますか?明らかに、多くのことは、それをどうしたいかによって異なります。これまでのところ、私は主に小規模な内部アプリケーションとWebプログラミングを行ってきました。優れたプログラム設計を知るにはどうすればよいですか?

8

唯一の解決策はExperienceです。これらの言語でたくさん(実際にはたくさんのように)コーディングするとエキスパートになります。プロジェクトを開発すると問題に直面するので、解決策を見つける必要があります。ある日、自分を専門家と呼ぶ問題に対する十分な解決策を見てきました。

コーディング、コードの読み取り、コードのレビュー、これらはすべて、優れたデザインでコーディングする方法を理解するのに役立ちます。インターネットで目にするコードの1つのスニペットに頼って、達成しようとしているものに最適なデザインが何かを知っていると言うことはできません。問題の最善の解決策は何かを知るために、それらの多くを調べる必要があります。

16
talnicolas

友情のように、専門知識は時間の産物です。主題に関する私のお気に入りの引用(私はソースを忘れます):

「良い判断は経験の結果です。経験は悪い判断の結果です。」

時間を入れて、あなたの技術を研究してください。即時のソリューションだけでなく、美しさと効率性にも努めます。

10
sunwukung

まず第一に、不可知論的なレベルでプログラミングを理解することが重要です。原則、概念、方法論などを知ることは、長期的にあなたを助けるでしょう。ここにあなたを助けるためにいくつかの良い本へのいくつかのリンクがあります:

本:

kiss プログラミングとの関係 solid が必要な場合は dry の方がいいときだけ覚えておいてください。 :)

3
Daveo

1)あなたは正しい場所にいます。スタック交換などのコミュニティフォーラムは、情報を見つけるための優れた方法です。

2)理解するOOP先に進む前に。スクリプトからより高度な開発に進む前に必要です。net.tutsplus.comは参照用の優れたサイトであり、このガイドはこちらです。- http://net.tutsplus.com/tutorials/php/object-oriented-php-for-beginners/

3)OOP=を学び、それを使って練習したら、適切なドキュメントを含むフレームワークをダウンロードし、「Getting Started」ガイドに従ってください(フレームワークは、 SymfonyはPHPに適しており、ここでガイドに従うことができます: http://www.symfony-project.org/getting-started/1_4/ en / 。また、「Jobeet」チュートリアルがあり、一緒にフォローできます

4)#3とともに、MVC(Model View Controller)パターンを学習します。これは、さまざまなフレームワークで使用される一般的なプログラミングパターンです。初心者から中級者に移動したい場合は必見です。

幸運を!

1
Greg H

あなたよりも優れたプログラマーとコードプロジェクトに取り組む

Protip:これは、コードだけでなく、もっと上手になりたいと思っているすべてのことで機能するようです!

しかし真剣に、もしあなたがそれを間違っているときにあなたが喜んであなたに話してくれる才能のある人々を見つけることができるなら、彼らと一緒にプロジェクトに取り組んでみてください。

あなたよりも優れているプログラマーによって書かれたものを読む

Daveoはいくつかの優れた本にリンクしています。また、より優れたプログラマーになることを重視する人々(そして通常は、それ自体がかなり優れたプログラマー)によって書かれた多くのブログを見つけることができます。

1
TehShrike

エキスパートプログラマであることは、一般的なタスクと一般的でないタスクの両方で、プログラミングの問題を推論して解決する一般的な能力です。これはおそらく言語に依存しませんが、少なくともいくつかのプログラミング言語とそのツールにも精通している必要があります。

熱心な作業を除いて、エキスパートになるための魔法のレシピはありません。チュートリアルを読んで、グーグルでググって、エキスパートに耳を傾け、問題に取り組み、多くのコードを書き、他の人と既存のプロジェクトで作業し、一般に多くの実世界の経験を積みます。 。

これはすべて言語に依存しないアドバイスです。

0
Andres F.

もちろん、成功につながるいくつかのアプローチがあります。すでに述べたように、経験は最も重要なものですが、それはあなた自身を専門家と呼ぶのに必要な時間に依存します。ただし、タイムスパンは数年または数十年で測定されます。

15年前にプログラミングの学習を始めましたが、私のスキルが最も向上したのは次の理由によると思います。

  1. プレッシャーが悪い。良い気分を保ち、今日解決できない問題を忘れて、明日それらに戻るだけです(そして、なぜそれが前日にそんなに複雑に見えたのか疑問に思います)。

    私は子供の頃にプログラミングを始めましたが、誰も何も学ぶことを強制されませんでした。誤解しないでください:プログラミング言語を習得するために子供から始める必要はありません。非常に短い時間で非現実的な目標を達成せずに、あなた自身の動機が成功の鍵となります。

    また、Linusのように独自のオペレーティングシステムを作成する必要もありません。また、成功したWebサイトが1日に数百人のユーザーによって訪問されることを誰も期待していません。あなたのプロジェクトの簡単な抜粋(上司、顧客、同僚...)は、あなたが何をしているか知っていることを示します。

  2. (ほぼ)習得するまでトピックに固執します。基本を学びます。

    習得は達成できないものです。すべてを知ることはほとんどありません。ただし、必ず基本を学び、プログラミング言語、パラダイム、または特定の構文規則やベストプラクティスの概念を過小評価しないでください。

    ただし、お願いします。決して、または常に聞いたり読んだりする場合は、それを受け入れないでください。誰かが何かをしないことについて話すときはいつでも、遠慮なく理由を尋ねてください。ルールがあるのには理由があります。しかし、それがあなたの状況にとって良いことであるかどうかは理由だけが教えてくれます。ある言語で何が良いかは、別の言語では問題になる可能性があります。

  3. 前進し続ける。

    何十年も同じトピックにとどまらないでください。 Javascriptを10年間使用した後、何か新しいことを教えることができる人はほとんどいなくなります。しかし、10年後には誰もJavascriptについて話さなくなります...なぜですか?ああ、あなたは私を手に入れた。将来に関する予測は常にエラーを起こしやすいです;)

    しかし、ある分野で数か月または数年の経験を積んだ後、あなたが学ぶことがあなたの「使命」の始めほど多くないことがわかります。問題が発生したとき、人々があなたに助けを求め始めるときがあります(実際の問​​題、私の宿題をしないでください)。

    これは、あなたが何らかの専門家になったことを示す良い指標です。この時点で、まだ自分を成長させる可能性があるかどうかを自問してください。あるいは、あなたが手を置きたい新しいものがあるかもしれませんが、あなたはこのケージにぴったりの鶏なので、誰もあなたを許可しません。

  4. 友達、妻、犬と一緒に出かけて...

    それはあなたの心を休ませます。 Android vs. Iphone、Flash vs. Silverlight、App vs Program ...)のような問題は、あなたの存在の中心ではなく、あなたのニーズに最適なものの問題になります。

    ソーシャルライフを(Facebookと交絡しないでください)することも、ソフトスキルの維持または向上に役立ちます。同僚に最適な(必ずしもそうではない)ソリューションに同意してもらう方法を知っている場合、何百ものプログラミング言語を知っているよりも価値があります。

  5. 脳を使う

    10年後、私があなたの人生を台無しにしたと言っている手紙を私に書かないでください。まったく異なる戦略に満足している場合、または米国の農民または大統領になることを発見した場合、残りの時間を費やす価値があります。それを実行してください。

0
Alex

Topcodersacogate のようなサイトのメンバーになることをお勧めします。ここでは、段階的に学習してアルゴリズムの問​​題を解決できます。たとえば、Usacogateトレーニングを完了しても、コンピュータサイエンスの専門家にはなれませんが、実際の問題の多くに取り組むための多くのスキルが得られます。それはあなたにテストを教えて、あなたに効率的な解決策を提供することを要求します。

さらに経験を積むためのさらに別の選択肢は、異なるパラダイムの言語を学ぶことです。たとえば、Haskellは関数型プログラミング言語です。それを学ぶことは、他の言語であっても異なる視点から問題に取り組むのに役立ちます。たとえば、Pythonは非常に機能的なスタイルでプログラムできます。

0
Timo

一部の回答とは異なり、「専門家」になるための要件は経験だけではありません。 (プログラミングだけでなく)あらゆる業界のほとんどの人は、その分野の専門家にならないと思います。彼らは有能で効率的になりますが、彼らは可能な限り近くにはなりません。

経験が足りないからです。専門家の助言が必要です。あなたは専門家である人から物事を行う方法を学ぶ必要があります。

幸い、プログラマーがエキスパートになるためのリソースはたくさんあります。おそらく最高のものは本です。もう1つの優れたリソースは、programmers.StackExchangeです。

ほとんどの時間をコードの作成に費やすだけでなく、その一部をClean Codeなどの本から知識を読んで統合することに費やします http://www.Amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/ 0132350882 。 Amazonでレビューを分析し、このサイトをチェックして、Stack Overflowで最高の本を見つけることができます。

1年に2〜3冊の本を学び、使用するのに十分な時間を費やせば、スキルが大幅に向上します。また、学んだことをすべて記録して思い出す方法を考えてください。そうしないと、情報を本当に知り、使用することが困難になります。

エキスパートプログラマーが興味を持っているトピックに注意してください。デザインパターン、ユニットテスト、キャリアの選択など。エキスパートプログラマーの視点から世界(または少なくともあなたの仕事)を見てください。

コード化するタスクが与えられたら、しばらく考えてみてください。いくつか質問してください。何が助けになりましたか?リスクは何ですか?最善のアプローチは何ですか?使用できるいくつかの異なるアルゴリズムは何ですか?プログラムの実行にはどのくらい時間がかかりますか? CPUボトルネックになりそうなものは何ですか?変更または追加できる機能は何ですか?

お役に立てれば。

0
B Seven