Перша моя порада - не обмежуватися виключно однією роллю. Чудово бути спеціалістом і глибоко володіти знаннями в певному наборі навичок (наприклад, PHP). Однак так само важливо мати широкі знання, що охоплюють решту вашого домену.
На мій досвід, більшість команд не прагнуть найняти когось, хто має знання, щоб переписати основні функціональні можливості PHP, а скоріше того, хто може впоратися з будь-якою проблемою, яка кидається на них (хоча, якщо такий рівень знань, звичайно, не зашкодить). Або хоча б хтось, хто може допомогти вирішити будь-які проблеми, з якими стикається команда. Наприклад, уявіть собі ситуацію, коли ваша заявка знижується і на них впливають клієнти. Ви можете кинути руки вгору і сказати: "Я не маю уявлення, що робити ..." або ви можете запустити SSH на сервер, почати сканувати журнали, помітити, що дисковий простір певної файлової системи заповнений, і приступайте до його очищення. Це другорядний приклад, але я думаю, що це зрозуміло. Завдяки цим базовим знанням, як розробник, Ви можете написати сценарій, який відстежує цю конкретну файлову систему та очищає її, як тільки вона досягне певного порогу. Тепер ви стали набагато ціннішими для свого менеджера.
Ще одна річ, яку я навчився за свою кар’єру, - це те, що справи швидко рухаються, і якщо ви не будете продовжувати, ви будете залишені позаду. Чим більше ви знаєте про все своє оточення (включаючи бізнес-аспекти), тим краще ви. Це не означає, що вам потрібно бути експертом у всьому, що ви робите, але, принаймні, маєте знання, щоб не бути позначеними як незрозумілі. Чим ви більше знайомі, тим більш пристосовані ви, і тим цінніший актив ви для своєї компанії.
Щоб спеціально відповісти на ваші запитання ...
- Які елементи сервера я повинен знати як розробник?
Будьте знайомі з усім стеком додатків. Знайте, що використовуються веб-сервер, база даних, механізми кешування тощо. І які версії теж. Майте достатньо знайомства, щоб ви могли відтворити середовище на власному сервері. Що саме по собі є життєво важливим. Ви повинні прагнути більш-менш мати однакові середовища в розробці та виробництві, оскільки це зменшує сюрпризи ( http://12factor.net/dev-prod-parity ).
- Як розробник, які у вас справи з сервером?
Це дійсно залежить від команди. У моєму конкретному випадку розробники відіграють величезну роль у постановці середовищ. Ми найбільше знайомі з внутрішньою роботою програми і тому можемо найкраще визначити, які серверні технології існують для її запуску. Я гадаю, що не всі команди мають такі підходи, але мати достатньо знайомих, щоб можна було залучати себе до обговорень - велика перевага. Зокрема, стосовно контролю версій, ви як розробник сильно впливаєте на те, яка технологія вибирається (Git, Subversion, Mercurial тощо), і тому ви повинні прагнути залучити себе до процесу прийняття рішень.
Отже, що тепер?
Що стосується моєї пропозиції щодо того, як найкраще підійти до вивчення всього цього? Рухайте ногами . Не хвилюйтеся, намагаючись прочитати все, що ви можете на цю тему, більша частина цього, ймовірно, просто витече з вашого мозку до того часу, коли ви закінчите. Замість цього починайте щось розробляти з нуля. Почніть з Vagrant ; це дозволить вам легко створити та керувати віртуальною машиною, яку ви можете використовувати як новий ігровий майданчик. Потім встановіть веб-сервер і базу даних і починайте створювати. Якщо у вас є ідея про додаток, ідеально, займіться цим ... якщо ні, знайдіть підручник або спробуйте відтворити наявний додаток. Сенс полягає лише в тому, щоб ознайомитися з усім процесом. Також, як розробник PHP, обов'язково перевіряйте PHP: Правильний шлях... він дійсно містить багато чудової інформації. І найголовніше, не напружуйте себе. Я думаю, ви пішли шляхом розробника, тому що це щось, що вам подобається і пристрасне ... не втрачайте з цього погляду!