В данной статье я хочу ответить на вопрос — “что должен знать Junior PHP разработчик в 2016м году?”.
При этом я постараюсь добавить побольше ссылок на учебные материалы, чтобы на собеседовании вам не пришлось краснеть

Пункт номер ноль

Разработчик должен соображать и уметь использовать Google. Первое оценить крайне сложно, для этого придумано много «дурацких» вопросов для собеседований. Второй пункт прививается в первые дни испытательного срока. Плюсом будет аккаунт на stackoverflow.com.

Фундамент

Если вы твёрдо намерены заняться web-разработкой, то первое что вам нужно будет понять – это принцип работы HTTP протокола (эти знания можно почерпнуть в профильных ВУЗах). Так же вы должны поверхностно знать о существовании TCP/IP протокола и понимать за что отвечает DNS сервер.

Выбрав для специализации стек LAMP вам следует начать знакомиться с Linux уже сейчас:

  1. установить дистрибутив, рекомендую ubuntu
  2. изучить файловую систему и её особенности
  3. научиться использовать командную строку
  4. научиться редактировать текстовые файлы в vim/nano
  5. научиться выходить из текстовых редакторов с сохранением и без ;)
  6. разобраться с управлением процессами — просмотреть запущенные, убить зависшие
  7. установить Apache, PHP и MySQL
  8. узнать о SSH

Установив Apache — научитесь его настраивать и рестартовать:

sudo a2enmod ...
sudo a2ensite ...
sudo service apache2 restart

Будьте осторожны, Linux затягивает, вроде неделька нужна для познания азов, а очнулся — уже Новый Год, а ты сидишь и iptables настраиваешь

Далее MySQL…

SQL/MySQL

Основы синтаксиса SQL требуются практически от всех программистов, будь то веб-разработка, или мобильная, вам же надо немного вникнуть в MySQL и понимать различия между MyISAM и InnoDB. Знать как работают LEFT/RIGHT/INNER JOIN’ы — это наглядно разъясняется в статье Visual Representation of SQL Joins:

Проверьте свои познания — создайте базу данных для учёта вашей домашней библиотеки (у вас же есть такая?), в ней должны быть следующие сущности:

  1. книги
  2. авторы книг
  3. ФИО тех, кто брал почитать

Основываясь на данной структуре данных, вы должны составить запросы которые покажут вам:

  1. автора, книги которого чаще всего берут почитать
  2. список тех, кто взял больше одной книги

SQL можно изучать в отрыве от всего остального, и он никому не повредит, чтобы разобраться на должном уровне с ним вам потребуется неделька усердного изучения без перерывов на поиграться.

HTML и CSS

Сверстайте пару страниц, от и до. Не слушайте, что это работа дизайнера/верстальщика/кого-то еще. Поверьте моему опыту — вам отдадут свёрстанную страницу, никто за вас не будет интегрировать HTML шаблон в вашу систему, так что знание HTML и CSS в обязательном порядке. И забудьте о том, что верстальщики будут готовые шаблоны вам отдавать — это сказки.

Разберитесь с селекторами в CSS, следующий код не должен вызывать у вас ужаса:

#my p.sel:first-line, .main li li a:hover + span {
    color:#f00; /* Что это за цвет? Включи логику! */
}

Узнайте что есть блочная модель, да как работает float. Что есть margin и padding. Почему CSS это каскадная таблица стилей, и что есть такое понятие как специфичность CSS-селектора.

Со всем этим можно разобраться за недельку-две, главное не лениться, ну и не стоит лезть в дебри кросс-браузерной вёрстки и анимации. Примочки типа LESS, SASS или БЭМ тоже стоит оставить на фронт-енд разработчиках

JavaScript

Несмотря на то, что PHP это бэкенд разработка, знания JavaScript’а вам сильно пригодятся — особое внимание уделите изучению следующих моментов:

  1. синтаксис знать нужно в обязательном порядке
  2. понимать область видимости переменных
  3. познать замыкания
  4. изучить события, и разобраться со «всплытием»
  5. AJAX — что за зверь, как работает

Это немного, изучение данных вопросов у вас не займет более недели, всё это очень наглядно есть в учебнике Ильи Кантора.

Ещё желательно приступить к изучению jQuery, вот вам учебник и по нему — jQuery для начинающих — это еще неделька на усвоение материала.

PHP

Как вам списочек вышеописанных скилов? И это мы ещё не добрались к PHP ;)

PHP начинается с основ языка:

  1. нужно знать что такое переменные и константы
  2. типы данныхприведение типов и сравнение данных
  3. область видимости переменных
  4. приоритеты операторов
  5. побитовые операции
  6. управляющие конструкции
  7. пространства имён
  8. чуток затронуть строковые функции, такие как:
    • explode()
    • str_replace()
    • strpos()
    • substr()
    • trim()
    • но их куда больше…
  9. работать с массивами нужно постоянно — функций много, я бы обратил внимание на следующие:
    • array_push()
    • array_pop()
    • array_map()
    • array_keys() и array_values()
    • семейство array_diff и array_intersect
    • различные сортировки
    • поиск по массиву in_array() и array_key_exists()
  10. работа с файлами и файловой системой тоже вполне тривиальная задача
  11. порекомендую досконально изучить как работает подключение файлов
  12. и понять как происходит работа с сессиями
  13. узнать на практике как обрабатывать входные данные с форм
  14. поработать с базой данных с помощью PDO

А ещё нужно иметь представление об объектной модели в PHP:

  1. наследование
  2. область видимости свойств и методов
  3. магические методы
  4. обработка ошибок с помощью исключений

Дополнительно требуется:

  1. понимание паттерна MVC
  2. уметь работать в IDE отличной от текстового редактора
  3. знание английского на уровне понимания примеров на stackoverflow

Так что ещё забыл, ах да — система контроля версий:

  1. пройдите обучалку по Git на Code Academy либо GitHub
  2. почитайте Git Book
  3. заведите аккаунт на GitHub
  4. сохраните в закладки GitHub Guides

PHP через год

Отдельно выделю те знания, которые требуются от Junior разработчика через год работы:

Объектная модель PHP должна не вызывать озадаченности на лице:

  1. абстрактные классы
  2. интерфейсы
  3. трейты как замена множественному наследованию
  4. позднее статическое связывание

Паттерны проектирования пора уже понимать и использовать:

  1. опять повторю про MVC
  2. Singleton не всегда вреден
  3. Factory
  4. Depedency Injection
  5. Active Record

Прочие навыки и познания:

  1. знакомство с каким-нибудь современным фреймворком (нынче уже Yii 2,  Laravel5, Symfony3, ZF3)
  2. разобраться с ORM
  3. composer в обязательном порядке
  4. понимание новых фич PHP7
  5. виртуализация с Vagrant
  6. установка и настройка NGINX
  7. Twitter Bootstrap как тренд в вёрстке админок
  8. работа в правильной IDE PHPStorm
  9. английский на уровне – задать вопрос на stackoverflow и словить минусов.

Автор статьи: Антон Шевчук.
Оригинал статьи.

Сервис обратного звонка RedConnect