私の最初のアドバイスは、自分を特定の役割に限定することではありません。スペシャリストであり、特定のスキルセット(PHPなど)について深い知識を持っていることは素晴らしいことです。ただし、ドメインの残りの部分にまたがる幅広い知識を持つことも同様に重要です。
私の経験では、ほとんどのチームは、PHPのコア機能を書き換える知識を持つ人を雇うのではなく、投げられた問題を処理できる人を雇うことを望んでいます(ただし、そのレベルの知識は確かに害にはなりません)。または、少なくともチームが遭遇した問題の解決を支援できる人。たとえば、アプリケーションがダウンし、顧客が影響を受けている状況を想像してください。手を挙げて「どうしたらいいかわからない...」と言うか、サーバーにSSHでログインし、ログのスキャンを開始して、特定のファイルシステムのディスクスペースがいっぱいになったことを確認して、クリーンアップします。これは小さな例ですが、ポイントは明確だと思います。開発者として、その基本的な知識があれば、その特定のファイルシステムを監視し、特定のしきい値に達するとクリーンアップするスクリプトを作成できます。あなたは今、あなたのマネージャーにとって、はるかに貴重な存在になっています。
私がキャリアの中で学んだもう一つのことは、物事は速く動くということです。環境全体(ビジネスの側面を含む)についてよく知っていれば、より良い結果が得られます。それは、あなたがするすべてのことの専門家である必要があると言うことではありませんが、少なくとも無知であると分類されない知識を持っています。熟知すればするほど、順応性が高まり、会社にとって価値のある資産になります。
具体的に質問に答えるには...
- 開発者として知っておくべきサーバー要素は何ですか?
アプリケーションスタック全体に精通している。使用されているWebサーバー、データベース、キャッシュメカニズムなどを把握します。そして、どのバージョンも。自分のサーバーで環境を再作成できるほど十分な知識が必要です。それ自体、それは非常に重要です。サプライズを減らすため、開発環境と本番環境でほぼ同じ環境になるように努力する必要があります(http://12factor.net/dev-prod-parity)。
- 開発者として、サーバーとはどのような取引をしていますか?
これは本当にチームに依存します。私の特定のケースでは、開発者は環境のステージングで大きな役割を果たします。私たちは、アプリケーションの内部動作に最も精通しているため、アプリケーションを実行するためにどのサーバーテクノロジーが採用されているかを判断するのに最適な立場にいます。すべてのチームがこのような実践的なアプローチを持っているわけではないと思いますが、議論に参加できるほど十分な知識があることは大きな利点です。具体的には、バージョン管理に関して、開発者としてのあなたはどのテクノロジー(Git、Subversion、Mercurialなど)が選択されるかによって大きな影響を受けるため、意思決定プロセスに参加するよう努力する必要があります。
んで、どうする?
このすべての学習にアプローチする最善の方法に関する私の提案は?足を動かします。対象についてできることをすべて読み込もうと心配する必要はありません。ほとんどの場合、終了するまでに脳から漏れてしまうでしょう。代わりに、ゼロから何かを開発し始めます。Vagrantから始めます。新しいプレイグラウンドとして使用できる仮想マシンを簡単に作成および管理できます。次に、Webサーバーとデータベースをインストールして、作成を開始します。完璧なアプリのアイデアがあれば、それを試してみてください...そうでない場合は、チュートリアルを見つけるか、既存のアプリを再作成してみてください。ポイントは、プロセス全体に精通することです。また、PHP開発者として、PHP:The Right Wayを必ずチェックしてください。...本当に多くの優れた情報が含まれています。そして最も重要なことは、ストレスを感じないことです。開発者の道をたどったのは、あなたが楽しんでいて情熱を注いでいるものだからです...見逃さないでください!