Очень интересную вакансию получил на днях, на мой взгляд она в какой то мере описывает то, что должен знать мидл.
- писать хороший код на PHP от 2 лет;
- знаешь для чего нужны интерфейсы в PHP
- у тебя есть опыт проектирования MySQL, понимание механизма оптимизации реляционных баз данных этого типа;
- используешь концепции ООП, а не пишешь лапшекод;
- знаешь основные паттерны проектирования
- умеешь разбираться в чужом коде;
- знаешь о замыкании в JavaScript и как красиво написать рабочий код;
- применял AJAX и периодически его используешь;
- знаешь как писать юнит-тесты и когда их писать целесообразно;
- знаешь о dependecy injection и почему он нужен для повторного использования, масштабирования и тестируемости;
- понимаешь, чем ActiveRecord со связями отличается от традиционного, фаулеровского, ActiveRecord
IMHO то что надо
- знать большинство отличий/нововведений 2-3 последних мажорных версия PHP (и уметь их правильно использовтаь)
- знать один из фреймворков (ZF2, Symfony2, Laravel4/5) на уровне полного понимания внутренней работы фреймворка (на каких паттернах построена та или иная часть системы, почему именно на них, как это все взаимодействует и т.д)
- знать как работают реляционные СУБД т.е понимание JOIN'ов не только, что куда лепить, а и как это происходит внутри, ну и с остальными функциями так же
- ну и в конце то концов разобраться с SPL, что бы не было ситуаций как на PHP UK Conf.
- JS - понимать как там все внутри крутиться, вертится. Желательно знать еще какой то фреймворк (Angular, backbone, etc)
- HTML, CSS - по вкусу (не считаю, что php программист должен быть крутым верстальщиком, но одно другому не мешает и если нравится то это только плюс будет)
- Знать English, что бы стыдно на митинге не было
- быть адекватным, вменяемым человеком