Набор знаний для php-падавана

Поскольку так сложилось, что я потихоньку начал вести преподавательскую деятельность и в связи с выполняемыми на работе обязанностями у меня появился определенный взгляд на набор умений, которые должны быть у начинающего php-разработчика (в дальнейшем падавана) в самом начале карьеры.

Этот пост ни в коем случае не рекомендация и не best-practices, и даже не курс молодого бойца – это лишь мой взгляд на:

  • набор знаний и умений (hard- и soft-skills)
  • стек технологий с которыми должен быть знаком
  • с каким проектами должен уметь работать.

Цель этого поста подготовить начинающих падаванов выбравших путь PHP к становлению джедаями. Но будут разумеется и общие рекомендации для всех падаванов, так что все нижеизложенное можно будет спроецировать на нужную платформу.

Для того чтобы гордо именоваться падваном и претендовать на позицию junior php developer необходимы:

  • знание и понимание возможностей PHP, отличия между версиями (на сегодняшний день, чем отличается PHP5 от PHP7)
  • знание и понимание ООП
  • знание алгоритмов сортировки и поиска
  • базовые знания о работе веб-сервера и протоколе http
  • базовые знания html, css, js

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

  • знать как расшифровывается ORM и зачем это надо
  • изучить хотя бы один из популярных фреймворков (yii2, symfony, laravel)
  • познакомиться с PHPUnit и Codeception, а также знать такие страшные вещи как TDD и BDD
  • познакомиться и попробовать phing (инструмент для сборки)
  • желательно иметь представления о vagrant и docker (хотя бы знать что это такое и зачем используется, если щупали, то плюсик в карму)
  • про использование git и composer я молчу – это даже не обсуждается

Кажется как много всего надо знать, но никто не говорит, что этим нужно владеть в совершенстве – достаточно понимать эти вещи и как они работают. А лучше всего это сделать как? Правильно создав небольшой тестовый проектик. В php-сообществе это классика – набросать простенькое CRUD-приложение с использованием по-возможности перечисленных выше технологий. Примерами таких тестовых приложений могут быть:

  • мини-версия twitter, youtube, stackoverflow
  • телефонная книга со спиком адресов, список покупок, планировщик событий или встреч
  • ну или что-то еще, что можно придумать

Пока вы будете это реализовывать вы столкнетесь с многими моментами, которые всплывут и потом в работе. Разобравшись и поняв их вы смело станенете достойным падаваном и получите шанс учиться у джедаев их искусству.

Приведу относительно типовую последовательность действий при выполнении тестового задания:

  1. Создание, настройка и развертка окружения где будет происходить разработка.
  2. Выбор фреймворка на котором будет выполняться и установка его в окружении.
  3. Подключение БД.
  4. Создание базового каркаса.
  5. Реализация CRUD.
  6. Перенос форм на AJAX. Отображение всего, что можно без перезагрузки страницы.
  7. Подключение регистрации/авторизации пользователей и разделение ролей.
  8. Развертка/деплой/публикация вашего тестового-приложения.

Под последним пунктом имеется ввиду, что будет нужно для того чтобы пощупать Ваше тестовое приложение (разумеется оно должно быть выложено на Gitlab, Github, Bitbucket).

Собственно это все. Если падаван освоил перечисленные выше моменты и может рассказать о них свои словами показывая понимание проблематики, понимает для чего и зачем нужны были совершаемые им действия, то он сделал достаточный шаг для того чтобы претендовать на позицию junior php developer.