Python、PHP、JavaScriptのエキスパートになる方法は?[閉まっている]


8

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

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

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


1
こんにちはアンドリューです。これが不必要にここに移行されて申し訳ありませんが、これは範囲が広すぎてスタック交換スタイルのQ&Aに適合しません。

1
さらに約111か月間ハッキングを続ける...
Steven A. Lowe

回答:


16

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

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


10

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

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

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


1
+1「即時の解決策ではなく、美しさと効率性」
Raynos

1
+1引用は経験の意味を完全にカプセル化しています。:)
Daveo

3

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

書籍:

プログラミングとのより強固な関係が必要な場合は、キスしたときにドライになることを覚えておいてください。:)


1

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日ではおそらく学ぶことができませんでした。時間と練習が必要ですので、落胆しないでください。
グレッグH

私はポイント3に同意しません。誰かにフレームワークをチェックアウトして使用するようにアドバイスすることは、プログラミング自体を学ぶのに役立ちません。ポイント4に関しては、概念としてのMVCのみがWeb上で意味をなしますが、パターンとしては意味がありません。
Daveo

確かに、フレームワークは、言語自体の向上には役立ちませんが、開発全般の向上には役立ちます。また、Web開発の業界標準を学ぶ方法も提供します。
グレッグH

1
そして、phpとpythonは主にWebテクノロジーに使用されているので、ここから始めます。これは、Web開発を行うかどうかを学ぶのに適したアーキテクチャパターンです。
グレッグH

@Daveoフレームワークは、順調に進むためのガイドです。最初は、何らかのガイダンスメカニズムを使用せずに正しいコードを記述することは困難です。フレームワークは、貧しい人が本物のメンターに取って代わるものです。それはあなたの自転車のトレーニングホイールです。快適になったら、フレームワークの使用をやめ、適切に実行してください
Raynos

1

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

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

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

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

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


0

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

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

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


0

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

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

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

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

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

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

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

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

  3. 前進し続ける。

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

    ただし、ある分野で数か月または数年の経験を積んでいると、学習した内容が「ミッション」の開始時ほど多くないことがわかります。問題が発生したときに、人々があなたに助けを求め始めるときがあります(実際の問​​題、私の宿題はやめてください)。

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

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

    それはあなたの心を休ませるでしょう。Android対Iphone、Flash対Silverlight、App対Programなどの問題は、存在の中心ではなく、ニーズに最適な問題になります。

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

  5. 脳を使う

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


0

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

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


0

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

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

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

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

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

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

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

お役に立てれば。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.