Антон Шевчук // Web-разработчик

Что должен знать Junior PHP разработчик // PHP

Elephpant

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

Отчасти перед вами обновленная статья Что должен знать начинающий PHP разработчик, а поскольку PHP достаточно интенсивно развивается в последнее время, то мне пришлось внести изменения в большую половину текста, можете сравнить из любопытства ;)

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

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

Фундамент

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

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

  • установить дистрибутив, рекомендую ubuntu
  • изучить файловую систему и её особенности
  • научиться использовать командную строку
  • научиться редактировать текстовые файлы в vim/nano
  • научиться выходить из текстовых редакторов с сохранением и без ;)
  • разобраться с управлением процессами — просмотреть запущенные, убить зависшие
  • установить Apache, PHP и MySQL
  • узнать о 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:

Visual SQL JOINS

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

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

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

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

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’а вам сильно пригодятся — особое внимание уделите изучению следующих моментов:

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

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

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

PHP

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

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

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

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

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

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

PHP через год

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

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

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

  • опять повторю про MVC
  • Singleton не всегда вреден
  • Factory
  • Depedency Injection
  • Active Record

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

  • знакомство с каким-нибудь современным фреймворком (нынче уже Laravel5, Symfony3, ZF3)
  • разобраться с ORM
  • composer в обязательном порядке
  • понимание новых фич PHP7
  • виртуализация с Vagrant
  • установка и настройка NGINX
  • Twitter Bootstrap как тренд в вёрстке админок
  • работа в правильной IDE PHPStorm
  • английский на уровне – задать вопрос на stackoverflow и словить минусов

Ну что, вы ещё претендуете на зарплату Junior разработчика?

© Антон Шевчук 2007-2016