Что должен знать Junior PHP разработчик
В данной статье я хочу ответить на вопрос — “что должен знать Junior PHP разработчик в 2016м году?”.
При этом я постараюсь добавить побольше ссылок на учебные материалы, чтобы на собеседовании вам не пришлось краснеть
Пункт номер ноль
Разработчик должен соображать и уметь использовать 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:
Проверьте свои познания — создайте базу данных для учёта вашей домашней библиотеки (у вас же есть такая?), в ней должны быть следующие сущности:
- книги
- авторы книг
- ФИО тех, кто брал почитать
Основываясь на данной структуре данных, вы должны составить запросы которые покажут вам:
- автора, книги которого чаще всего берут почитать
- список тех, кто взял больше одной книги
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 начинается с основ языка:
- нужно знать что такое переменные и константы
- типы данных, приведение типов и сравнение данных
- область видимости переменных
- приоритеты операторов
- побитовые операции
- управляющие конструкции
- пространства имён
- чуток затронуть строковые функции, такие как:
- explode()
- str_replace()
- strpos()
- substr()
- trim()
- но их куда больше…
- работать с массивами нужно постоянно — функций много, я бы обратил внимание на следующие:
- array_push()
- array_pop()
- array_map()
- array_keys() и array_values()
- семейство array_diff и array_intersect
- различные сортировки
- поиск по массиву in_array() и array_key_exists()
- работа с файлами и файловой системой тоже вполне тривиальная задача
- порекомендую досконально изучить как работает подключение файлов
- и понять как происходит работа с сессиями
- узнать на практике как обрабатывать входные данные с форм
- поработать с базой данных с помощью PDO
А ещё нужно иметь представление об объектной модели в PHP:
- наследование
- область видимости свойств и методов
- магические методы
- обработка ошибок с помощью исключений
Дополнительно требуется:
- понимание паттерна MVC
- уметь работать в IDE отличной от текстового редактора
- знание английского на уровне понимания примеров на stackoverflow
Так что ещё забыл, ах да — система контроля версий:
- пройдите обучалку по Git на Code Academy либо GitHub
- почитайте Git Book
- заведите аккаунт на GitHub
- сохраните в закладки GitHub Guides
PHP через год
Отдельно выделю те знания, которые требуются от Junior разработчика через год работы:
Объектная модель PHP должна не вызывать озадаченности на лице:
- абстрактные классы
- интерфейсы
- трейты как замена множественному наследованию
- позднее статическое связывание
Паттерны проектирования пора уже понимать и использовать:
- опять повторю про MVC
- Singleton не всегда вреден
- Factory
- Depedency Injection
- Active Record
Прочие навыки и познания:
- знакомство с каким-нибудь современным фреймворком (нынче уже Yii 2, Laravel5, Symfony3, ZF3)
- разобраться с ORM
- composer в обязательном порядке
- понимание новых фич PHP7
- виртуализация с Vagrant
- установка и настройка NGINX
- Twitter Bootstrap как тренд в вёрстке админок
- работа в правильной IDE PHPStorm
- английский на уровне – задать вопрос на stackoverflow и словить минусов.
Автор статьи: Антон Шевчук.
Оригинал статьи.