Мой первый совет - не ограничиваться только одной ролью. Здорово быть специалистом и иметь глубокие знания в определенном наборе навыков (например, PHP). Однако столь же важно иметь широкие знания, которые распространяются на остальную часть вашего домена.
По моему опыту, большинство команд не хотят нанимать кого-то, кто обладает знаниями для переписывания основных функций PHP, а скорее того, кто может справиться с любой проблемой, которая им брошена (хотя наличие такого уровня знаний, безусловно, не повредит). Или, по крайней мере, кто-то, кто может помочь решить любые проблемы, с которыми сталкивается команда. Например, представьте себе ситуацию, когда ваше приложение выходит из строя и это влияет на клиентов. Вы можете либо поднять руки и сказать: «Я понятия не имею, что делать ...», или вы можете подключиться по SSH к серверу, запустить сканирование журналов, заметить, что дисковое пространство определенной файловой системы заполнено, и приступить к его очистке. Это небольшой пример, но я думаю, что суть ясна. С этими базовыми знаниями, как разработчик, Вы могли бы написать скрипт, который отслеживает эту конкретную файловую систему и очищает ее, как только она достигает определенного порога. Теперь вы стали гораздо более ценным для своего менеджера.
Еще одна вещь, которую я узнал за свою карьеру, это то, что все движется быстро, и если вы не поспеваете, вас оставят позади. Чем больше вы знаете обо всей своей среде (включая аспекты бизнеса), тем лучше для вас. Это не значит, что вам нужно быть экспертом во всем, что вы делаете, но, по крайней мере, иметь знания, чтобы не быть помеченными как невежественные. Чем больше вы знакомы, тем более адаптируемы вы и тем более ценный актив для вашей компании.
Чтобы конкретно ответить на ваши вопросы ...
- Какие элементы сервера я должен знать как разработчик?
Быть знакомым со всем стеком приложений. Узнайте, какой веб-сервер, база данных, механизмы кэширования и т. Д. Используются. И какие версии тоже. Имейте достаточно знаний, чтобы вы могли воссоздать среду на своем собственном сервере. Что само по себе жизненно важно. Вы должны стремиться к тому, чтобы более или менее иметь одинаковые среды в разработке и производстве, так как это уменьшает количество сюрпризов ( http://12factor.net/dev-prod-parity ).
- Как разработчик, какие у вас отношения с сервером?
Это действительно зависит от команды. В моем конкретном случае разработчики играют огромную роль в организации среды. Мы наиболее знакомы с внутренней работой приложения и поэтому можем определить, какие серверные технологии используются для его запуска. Я полагаю, что не у всех команд есть такой практический подход, но иметь достаточную осведомленность, чтобы иметь возможность участвовать в обсуждениях, является большим преимуществом. В частности, что касается контроля версий, вы, как разработчик, очень сильно зависите от того, какая технология выбрана (Git, Subversion, Mercurial и т. Д.), И поэтому должны стремиться вовлечь себя в процесс принятия решений.
Ну что теперь?
Что касается моего предложения о том, как лучше всего подойти к изучению всего этого? Двигай ногами . Не беспокойтесь о попытках прочитать все, что вы можете по этому вопросу, большинство из них, вероятно, просто вытечет из вашего мозга к тому времени, когда вы закончите. Вместо этого начните разрабатывать что-то с нуля. Начать с бродяги ; это позволит вам легко создавать и управлять виртуальной машиной, которую вы можете использовать в качестве новой игровой площадки. Затем установите веб-сервер и базу данных и начните создавать. Если у вас есть идея для приложения, идеально, пойти на это ... если нет, найдите учебник или попробуйте воссоздать существующее приложение. Дело в том, чтобы просто ознакомиться со всем процессом. Кроме того, как разработчик PHP, обязательно ознакомьтесь с PHP: правильный путь... это действительно содержит много отличной информации. И самое главное, не напрягайте себя. Я предполагаю, что вы пошли по пути разработчика, потому что это то, что вам нравится и вы увлечены ... не упускайте это из виду!