У цій статті я хочу відповісти на питання — “що повинен знати 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:

Перевірте свої пізнання — створіть базу даних для обліку вашої домашньої бібліотеки (у вас же є така?), у ній повинні бути наступні сутності:

  • книги
  • автори книг
  • ПІБ тих, хто брав почитати

Грунтуючись на даній структурі даних, ви повинні скласти запити які покажуть вам:

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

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

Інші навички та знання:

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

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