私はPHPで何年も働いており、言語を非常によく理解し、非常にうまく機能している多くの高度なシステムとそれほど高度ではないシステムを作成しました。
私が直面している問題は、私が以前に学んだことのない何かの必要性を見つけたときにのみ学ぶということです。これにより、問題を処理するソリューションやその他のコードを検索するので、これまで見たことのない新しい関数や構造について学びます。このようにして、私は自分のより良いテクニックの多くを学びました(Amazon、Google、または他の主要企業によって出されたクラスを勉強するなど)。
これの主な問題は、それが存在することを知らないと何かを学ぶことができないという概念です。たとえば、empty()
関数について学ぶのに数か月のプログラミングが必要で、strlen()
を使用して文字列の長さをチェックして空の値をチェックするだけでした。
私は今、ますます大きなシステムの構築に取り掛かっています。highscalability.comのようなブログを読み始め、スケーリングのためにMySQLレプリケーションとサーバーデータを研究しています。システム全体を機能させるには、コードの構造が非常に重要であることを私は知っています。
Redditの構造に関する最近のブログを読んだ後、そこにいくつかの標準または「受け入れられたシステム」があるかどうか疑問に思いました。
私はフレームワークを調べました(私は後悔したKohanaを使用しましたが、PHPフレームワークは私には向いていないと判断しました))そして私はフレームワークを持つよりも独自の関数ライブラリを好みます。
私の現在の構造は、WordPress、Kohana、そして私自身の知識を組み合わせたものです。
私が潜在的に有益であると見ることができる方法は次のとおりです。
非常に優れたシステム開発者であるというレベルを「次のレベルに引き上げる」ための最良の方法は何でしょうか。
PHPプログラマーになりたい人は、常に最初のWordのみを受け取り、2番目のWordを完全に無視します。
「プログラミング」は「PHP」よりもはるかに重要ですが、PHPプロフェッショナルであるためには、そもそもプログラマーである必要があります。
それで、私は最後のものに投票します-本を読むこと。 PHPではなく、プログラミング全般についてです。 Grady Booch 's、 Martin Fowler ' sそして古いもの Donald Knuth 's。
JavaやPythonのような他の言語を見てみるのもいいでしょう。それらに切り替えるのではなく、それらから学ぶことです。
フレームワークよりも独自の関数ライブラリの方が好きです
「関数のライブラリ」と「フレームワーク」を別個の概念として参照しているので(良いです!)、少し試してみて、その関数のライブラリをフレームワークに変えてみませんか?これは学ぶための素晴らしい方法ですが、市場性のあるスキルを持つための最良の方法ではありません;)
また、間違ったを学ぶのに最適な方法なので、始める前にいくつかの調査を行う必要があります。
ほとんどすべてのフレームワークが持っている特定の機能があり、それには理由があります。それらを研究してください。 なぜそれらが存在するのか、そしてそれらのバリエーションは何かを調べます。フレームワークに含める実装を選択します。
include
モジュール を実行する手段が必要かもしれませんか?何に興味があるのかわからないので、そこでやめます。
ネイサンは正しいので、この部分は重要です。あなたの作品は他の人に見られ、挑戦され、批評され、修正されなければなりません。あかりをあかりの下に置いたままにしないでください。グーグルのコードやsourceforgeなどに載せてください。人々がそれを真剣に見ようとしているのなら、真剣に受け止める必要があります。単体テストと回帰テストを維持する必要があります。バージョン管理を使用する必要があります。各ファイルの先頭に大きな/* header comment */
を付け、各クラスとそのメンバーに役立つドキュメント生成コメントを付けて、適切にコメントする必要があります。
これらすべてを行うと、他のプラットフォームについて(高レベルで)学ぶことができます。 PHP開発者として間違いなく「Ding40」を行うことができます。単体テストについて、回帰テストについて学ぶことができます。効果的に文書化することについて学ぶことができます。
あなたのフレームワークが「特異でおそらく厄介」になることを保証しますが、それを書くことから多くを学ぶことができます。フレームワークは製品ではないことに注意してください。それは旅です...ある種の。
ここにいくつかの考えがあります:
別のことを試してください。新しい言語を学びましょう。他の言語を学ぶ過程で、実際には両方であなたをより良くすることがあります。
オープンソースプロジェクトに貢献します。
高いスケーラビリティとPHP/MySQLは友だちではありません。そのためだけに構築されたテクノロジーが今日あります。 node.jsとRedisがいくつか挙げます。
SOで質問に答えます。他の人の問題は、あなたが箱の外で考えさせ、助けようとするプロセスを改善し、そしてあなたは誰かに良いことをすることもできます。
[コーヒーを飲みながら目が覚めた他のことを考えたら、ここに追加しようとします:D]
あなたがすでに知っていることをすることを学びなさい...別の方法で。例:
シンプル:やる。ニーズはあなたに学ばせます。商用であれオープンソースであれ、ますます高度なプロジェクトに参加する方法を見つけてください。あなたが本当に何かを学ぶことができる他の方法はありません。
フレームワークをもう一度調べる必要があるかもしれません。ZendFrameworkを見てみることをお勧めします。これは、適切と思われるコンポーネントのライブラリに似ており、従う必要のある厳密な構造を実際に課すものではないためです(他のいくつかのフレームワークはそうします)、それは(かなり正気の私見)プロジェクトレイアウトを示唆しますが。良い出発点は ディープエンドを生き残る です。
あなたがまだ言及していないこと、そしてそれは知っておくと役立つかもしれません(特に大規模なプロジェクトで):
私は掲示板に参加して、他の人々の問題を解決しようとしました。時々、あなたにいくつかの研究を強いる非常に挑戦的な質問があります。あなたがそれに答えることができないならば、あなたはそれから何かを学ぶことができる誰かを待つことができます。
フレームワークについては、それらから学びましょう。そこにあるフレームワークのほとんどはかなり遅い可能性があるので、私も自分でロールします。そこにあるほとんどのウェブサイトには十分速いですが。
FacebookのPHPライブラリもご覧になることをお勧めします。そこでは面白いことがいくつかあります。
あなたができる最善のことは効率的なアルゴリズムに関する本を買うことです。すべてのコンピュータサイエンスの学生の生活の中で、彼/彼女はそれらを研究しなければならない時が来ます。議論/解決された問題は、あなたが直面する可能性のあるほとんどすべての現実世界の問題の抽象化です。
他の人がどのようにしたかについてのブログを読むことに加えて、効率的なアルゴリズムの原則を実際に使用する(そしておそらく実装する)方法を理解するのに役立つので、それは完全に問題ありません。
よろしく。
他の開発者との協力については十分とは言えません。私は特に3人の開発者を知っています。2人は私が日常的に一緒に仕事をしていて、彼らの知識で私を驚かせます。私がしていることすべてについて彼らの意見を聞いています。私が自分の考えを二番目に推測するからではなく、特に開発者として尊敬している人々から、他の考えを聞きたいと思っています。私はこれらの人々から他のどの手段よりも多くを学びます。他の上級開発者にアクセスできない場合は、必ずSOまたは他の開発フォーラムに投稿して人々の意見を聞いてください。特定のプロジェクト/問題にどのように取り組むかを人々に尋ねてください。新しいテクニックを学ぶことはありません。 /メソッド/関数は、それらが使用されていることを確認しない限り、一般的に使用されます(存在することがわからない場合、どのようにして何を探すべきかを知ることができますか?)
また、すでに述べたように、OSアプリに参加してください。 sourceforgeにアクセスして、開発者が必要なプロジェクトを見つけてください。または、アプリをダウンロードして、そのプラグインを作成してみてください(Invision 3.0 atmのプラグインを作成していて、いくつかのことを学んでいます)。
お役に立てば幸いです。
他の人のコードを読んでください。あなたは今あなた自身のライブラリを持っています、それでもあなたは他のアプリケーションのソースを読むときにいくらかの啓蒙を得るかもしれません。次に、「なぜ」と自問してください。読者ではなく、ブログの執筆者になりましょう。また、言語よりもプログラマーを重視します。むしろ、すでに問題を解決している解決策を見て、あなた自身の知識でそれらを複製しようとします。頑張って、たくさん楽しんでください!
他のプログラマーのコードを調べるアプローチは、「良い」または「悪い」プラクティスを学ぶための良い方法です。他のコードを読んだ後、あなたは良いコードに対する「感覚」を発達させます。
Zend Framework、symfony、CakePHP、Agaviなどのフレームワークを絶対にお勧めします。多くの貢献者がそのコードを見て、常に「理想的な」ソリューションに向けて開発しているからです(もちろん、決して到達することはありません...);)まだ作成できますフレームワークが提供するクラスではなく、独自のクラスを開発するという決定...
このように長いPHPの背景があるため、オープンソースフレームワークへの貢献を検討できます。他の開発者との話し合いにより、より迅速に前進できます。
コードを他の人に見せて建設的なフィードバックを求めることも同じ効果があります。他の人と自分のスキルをベンチマークするまで、自分がどれだけ優れているかはわかりません。常に建設的な方法で。これは、オープンソースフレームワークに貢献する場合の自然なプロセスです。 ;)
例を操作し、展開するときに操作して、例をより機能的にし、より多くの機能を提供することによって例を拡張する方法を学習する必要があります。
ただし、これまでにPHPで学んだことを作成するのは良いことです。もっと練習するには、予約システムなどを作成する必要があります。遅かれ早かれ、PHPでさらに勉強すると、より多くを学ぶことで、より多くのことを拡張できるようになります。はるかに良くなります。
Zend PHP認定試験を支払うことができるかどうか、会社に尋ねることができます。この試験を勉強するには、PHPよく知って、読んでトレーニングする必要があります。多くのドキュメント、Zend学習ガイド、および模擬試験によるトレーニングもあります。これは非常に効率的な改善方法であり、レジュメでは非常に見栄えがします。