О том, что такое Zend Certified PHP Engineer (ZCE) и как к нему готовиться было достаточно статей. Я опишу свое мнение о ZCE (PHP 5.5) и свой процесс подготовки за неделю (с учетом моего пятилетнего опыта практической разработки).
Сама по себе сертификация, в общем и целом (за исключением нескольких вопросов), проверяет, насколько усвоенной оказалась официальная документация PHP. Может попасться пару практических вопросов, а также вопросы на знание паттернов (мне попался про Registry и его применимость), что немного радует.
В процессе подготовки большую часть времени я провел за чтением официальной документации и именно она помогла выявить ответы на коварные вопросы.
Под рукой также оказалась книжка Zend PHP 5 Certification Study Guide второго издания по PHP 5.3. Полистав ее, освежил в памяти информацию о некоторых редко используемых методах. Для практики тестирования использовал zend-php.appspot.com/questions_list и www.lornajane.net/posts/2015/zce-preparation-pack.
Примерно через месяц после сдачи экзамена в почтовом ящике оказался твердый конверт из города Купертино штата Калифорния. В конверте были: инструкция, сертификат и синяя наклейка.
Основными причинами сдачи экзамена стали: любопытство, проверка своих сил и сложности экзамена. Все это я получил. Тест показался не сложным. Также, без явных на то причин, после сдачи экзамена в течение полугода были получены приглашения на собеседование из Новой Зеландии и Германии. Видимо наличие ZCE «у них» имеет какой то вес. Впрочем, и у нас при поступлении на работу будет плюсом иметь синий значок ZEND’a.
На мой взгляд, новичку будет полезна подготовка к ZCE как средство мотивации и как последующий критерий отбора при поступлении на работу, а уверенному в своих знаниях и опыте – как самопроверка. Для быстрой и эффективной подготовки могу посоветовать работу в паре или воспользоваться наставничеством бывалых людей, например Lorna Jane Mitchell или Lukyanchikov Alexandr.
Да, чуть не забыл, помимо всего прочего, Zend подарил вечную лицензию на Zend Studio Basiс, разместил в каталог сдавших экзамен (yellow pages) и возможность вступить в закрытую группу LinkedIn (Zend Certified Engineers).
Взгляды на ZCE
Сама по себе сертификация, в общем и целом (за исключением нескольких вопросов), проверяет, насколько усвоенной оказалась официальная документация PHP. Может попасться пару практических вопросов, а также вопросы на знание паттернов (мне попался про Registry и его применимость), что немного радует.
Процесс подготовки
В процессе подготовки большую часть времени я провел за чтением официальной документации и именно она помогла выявить ответы на коварные вопросы.
Под рукой также оказалась книжка Zend PHP 5 Certification Study Guide второго издания по PHP 5.3. Полистав ее, освежил в памяти информацию о некоторых редко используемых методах. Для практики тестирования использовал zend-php.appspot.com/questions_list и www.lornajane.net/posts/2015/zce-preparation-pack.
Результаты
Примерно через месяц после сдачи экзамена в почтовом ящике оказался твердый конверт из города Купертино штата Калифорния. В конверте были: инструкция, сертификат и синяя наклейка.
Основными причинами сдачи экзамена стали: любопытство, проверка своих сил и сложности экзамена. Все это я получил. Тест показался не сложным. Также, без явных на то причин, после сдачи экзамена в течение полугода были получены приглашения на собеседование из Новой Зеландии и Германии. Видимо наличие ZCE «у них» имеет какой то вес. Впрочем, и у нас при поступлении на работу будет плюсом иметь синий значок ZEND’a.
Стоит ли сдавать?
На мой взгляд, новичку будет полезна подготовка к ZCE как средство мотивации и как последующий критерий отбора при поступлении на работу, а уверенному в своих знаниях и опыте – как самопроверка. Для быстрой и эффективной подготовки могу посоветовать работу в паре или воспользоваться наставничеством бывалых людей, например Lorna Jane Mitchell или Lukyanchikov Alexandr.
Да, чуть не забыл, помимо всего прочего, Zend подарил вечную лицензию на Zend Studio Basiс, разместил в каталог сдавших экзамен (yellow pages) и возможность вступить в закрытую группу LinkedIn (Zend Certified Engineers).
Комментарии (22)
la0
08.06.2015 16:45Чтобы не повторяться, просто добавлю ссылку на моё мнение и обсуждение годичной давности.
habrahabr.ru/post/229191/#comment_7763809
Alex_At_Net
08.06.2015 17:21+1Проходил сертификацию очень давно — www.zend.com/en/yellow-pages/ZEND005322
Пока работу или работников не ищите — разницы нет. Как начинаете искать — очень даже разница есть :)
skvot
Скажите пожалуйста, дает ли подобный сертификат реальные преимущества при устройстве на работу в России и за ее пределами?
И, если я правильно понимаю, вопросы, по сути, на знание документации, то есть наличие такого сертификата никак не отражает способность человека программировать?
P.S.
Забавно, тестируют людей на знание документации, в которой местами нет даже логики порядка передачи аргументов в функции…
edogs
А что такое «способность программировать»? Есть, например, вопросы на паттерны. Есть вопросы «что даст такой-то код при выполнении».
Так потому и тестируют. Была бы логика — тестирования не надо было бы, точнее достаточно было бы 1 вопроса. А раз логики нет, то надо тестировать, иначе как Вы код будете писать? В мануал лезть каждые 5 минут?
skvot
Спасибо за ответы!
Согласен, довольно абстрактный вопрос задал.
Этот момент не совсем понял :) В реальной жизни у меня есть ide, которая поможет мне вспомнить порядок аргументов в str_replace
edogs
А что если Вы смотрите чужой код в поисках ошибки, а ошибка может быть в перепутанных местами аргументах? Вот тут знание документации будет совсем не лишним.
symbix
> За рубежом небольшой бонус есть, т.к. там понимают что это за сертификат. В россии нет.
Мне кажется, это потому что здесь понимают, что это за сертификат :-)
> что такое «способность программировать»
Понимать и составлять алгоритмы, структуры данных, архитектуру приложения.
> раз логики нет, то надо тестировать, иначе как Вы код будете писать? В мануал лезть каждые 5 минут?
На php пишу уже 11 лет. Порядок аргументов в не самых часто используемых функциях-методах не помню, и не собираюсь: в IDE всегда есть подсказка, которая читается за ту 0.1 секунды, пока нажмешь enter в списке автокомплита.
Код написать — это вообще не проблема, основная проблема — подумать, спроектировать приложение, разработать алгоритмы. Тест на code monkey.
edogs
В россии, например, бытует мнение, что это «какая-то фигня в онлайне, школьника друга попросил, он пройдет и все».
На деле же для сдачи все же требуется определённое количество знаний (учитывая цену теста в 100+ баксов готовится приходится достаточно серьезно, с запасом), на тест надо приходит с 2 документами (т.е. васю не попросишь прийти) и начитить невозможно (смартфоны, учебники — все за классом остается).
И да, там есть вопросы на xml парсинг (требующие логики), на знание паттернов (требующих не просто знания языка), на знание owasp тех же (что тоже полезно) и так далее.
Но это же тест на знание PHP. На кой черт в тесте на знание PHP тестировать знание архитектуры приложения? Ведь это не языкозависимый навык.
В тестах только часто используемые:)
Т.е. Вы код только пишите? А чужой не читаете?:) Например, на предмет ошибок? Не доводилось? За 11 лет-то?:) Или Вам при чтении кода порядок аргументов тоже автокомплит подсказывает?
Основная проблема не в том, что бы написать код и даже не в том, что бы спроектировать приложение. Основная проблема в людях, которые считают что написать код это вообще не проблема:)
Так, например, мы через раз встречаем мануальные функции реализованные программером, который не читал мануал и не в курсе что они в языке есть. sic! Вдумайтесь! В проекте на 120кб кода около 40кб кода это реализация и так существующих штатных php функций. sic!
Это тест на знание языка программирования, чего-то другого от него ожидать это странно.
Вы-то чего от него ожидаете-то? Вопросов про расчет оптимальной траектории полета до солнца на сверхпротонных фазерах?:)
symbix
> Но это же тест на знание PHP
«Знание языка» — это само по себе бесполезно. Если человек выучил язык наизусть, но не способен написать нормальную программу, от него нет никакого толка.
В PHP есть моменты, которыми действительно можно проверить опыт работы: приведение типов, скажем, или особенности array(), или SPL. Но конкретно зендовский тест… Я его видел (правда, старый). Вопросы типа «как называется функция — libxml_get_error, libxml_get_errors или get_libxml_errors» не имеют права на существование, для ответа на этот вопрос существует IDE. С порядком аргументов — какой-нибудь str_replace спросить можно при острой нехватке вопросов, но не более. Или вон там вопросы про mysqli — простите, но если человек помнит, как напрямую работать с mysqli, то одно из двух — он либо разрабатывает DBAL (и то, почему не PDO?), либо говнокодер.
> Т.е. Вы код только пишите? А чужой не читаете?:) Например, на предмет ошибок? Не доводилось? За 11 лет-то?:) Или Вам при чтении кода порядок аргументов тоже автокомплит подсказывает?
Если порядок аргументов нарушает контракты методов — IDE подсказывает, конечно. Если нет — такие вещи должны выявляться юнит-тестированием.
А так, конечно, всякое говно читать приходилось, и портянки с echo и mysql_query, и тд. Не, на самом-то деле я примерно помню большинство даже редких (а где засомневаюсь — кликну и IDE подскажет, да). Но на подобные вопросы отвечать иначе чем «идите в жопу с такими вопросами» считаю унизительным для разработчика уровнем выше кодера.
> Так, например, мы через раз встречаем мануальные функции реализованные программером, который не читал мануал и не в курсе что они в языке есть
Знать, что есть, и помнить точное название и порядок аргументов — две большие разницы. Можно и не знать, можно предположить название и увидеть в автокомплите или найти в мануале. Написать что-то, не проверив наличия готового — это даже не code monkey, это какой то code donkey.
По практике же найма, опытный Python- или Java-разработчик после месяца изучения пишет на PHP уверенно и хорошо, а вот опытного кодера на вордпрессах и прочих джумлах обучить невозможно вообще.
> Вы-то чего от него ожидаете-то?
Ничего не ожидаю, я его видел. :-)
Про composer там спрашивают? Про юнит-тестирование? Ну или, скажем, что такое SOLID или DDD? Вот то-то и оно. Registry, блин, еще бы про синглтон спросили.
edogs
Достаточно странная идея, с нашей точки зрения, отрицать полезность для разработчика на php знать язык php.
symbix
Это было между прочим, основная проблема, конечно, в качестве.
Я не против существования теста на знание языка и его стандартных библиотек, но он должен соответствовать реальности. В реальности, скажем:
— с mysqli никто вручную не работает, для этого есть DBAL/ORM;
— как называется функция — spl_register_autoload или spl_autoload_register — никто не помнит: механизм понятен, но сам никогда не писал, потому что это делал фреймворк или composer;
— или вот отличный вопрос, специально открыл zend-php.appspot.com, просто жесть:
Which of the following functions is used to determine if a given stream is blocking or not?
stream_get_blocking
stream_get_meta_data
stream_is_blocking
stream_get_blocking_mode
Вот это — «знание языка»? Это бред собачий. Кому хоть раз в жизни вообще может понадобиться это узнать? Один раз поставил сокет в нужный режим — и работаем.
Ну и PHP, знаете, такая особая штука. Сам по себе язык, в отрыве, вообще непригоден для работы. Что-то даже простенькое сделать на php без фреймворка приводит к написанию мини-фреймворка. И вот в этой ситуации — нет ни одного вопроса на инфраструктуру, без которой разработку на php представить нельзя (composer, phpunit...), зато есть вот ЭТО.
edogs
Или еще круче бывает, wordpress программист не знающий половины базовых php функций даже в контексте их существования, но знакомый с codex-ом.
Так не проходите тест на php, если Вы работаете с ORM. Идите найдите тест на ORM и пройдите его.
В чем проблема-то? Вы с php функциями не работаете, но обижаетесь что их знание обязательно для прохождения теста на язык php, жесть просто.
По остальному — если Вы знаете php и постоянно работаете с ним, никакой проблемы с приведенными Вами примерами нет.
Если же Вы только что пришли «с другого языка» или «работали только с надстройками над php типа ORM», то этот тест Вы не пройдете и… это будет абсолютно справедливый результат, потому что языка Вы не знаете, пусть даже программист Вы великолепный.
symbix
Еще раз.
Знать — не значит постоянно пользоваться и помнить все детали.
Знать, что есть mysqli, как он работает, и при необходимости уметь написать свою обертку — надо.
Помнить, как там что называется, кроме самого распространненного — это странно.
Вот вам вопрос в стиле Zend Certification (чур, не подглядывать).
Как получить дополнительные результаты multiquery-запроса?
1) mysqli::get_more_results()
2) mysqli::more_results()
3) mysqli::get_multi_results()
4) mysqli::multi_results()
edogs
А вот это уровень практика не только знающего язык, но и практикующего его.
Вот Вы вроде по русски пишите, вероятно знаете русский язык.
Задумайтесь — Вы в принципе «правила русского языка знаете, знаете как составлять предложения, знаете где ставить Ъ» (тот подход что рекламируете Вы) или же не задумываясь пишите правильно и в фразе «извени за кофе она ни остылл» Вам на автомате что-то режет глаз?
Так вот тест на язык подразумевает второй тип знания, а не первый.
symbix
Вы не ответили на самую интересную часть. :-)
edogs
Нет правильного ответа у Вас там.
В тему топика как раз статья появилась habrahabr.ru/post/259865 — задумайтесь.
symbix
> Нет правильного ответа у Вас там
Верно. А в мануал подглядывали? :)
> задумайтесь
О чем? Все, кроме хака с переопределением true в неймспейсе — знал, а за применение же в продакшен-коде подобных трюков надо бить по рукам указкой.
edogs
О том что там почти все вопросы требуют знания языка куда выше чем уровень "Помнить, как там что называется, кроме самого распространненного".
julia_morg
Ну вообще, если вы не работаете с mysqli, это не значит, что никто не работает: )
Точно так же и с написанием автолоада — иногда это приходится делать.
Поэтому, вероятно, дело не в том, что это все «бред собачий», а в том, что вы немного в другой сфере работаете.
OnYourLips
> И да, там есть вопросы на xml парсинг (требующие логики), на знание паттернов (требующих не просто знания языка), на знание owasp тех же (что тоже полезно) и так далее.
И все они покрывают самые примитивнейшие аспекты этих областей.
> Вы-то чего от него ожидаете-то? Вопросов про расчет оптимальной траектории полета до солнца на сверхпротонных фазерах?:)
Если честно, то я ожидал тест хотя-бы уровня среднего разработчика. Но там нет ничего выше джуниорского уровня.
> Т.е. Вы код только пишите? А чужой не читаете?:) Например, на предмет ошибок? Не доводилось? За 11 лет-то?:) Или Вам при чтении кода порядок аргументов тоже автокомплит подсказывает?
А вы ошибки методом чтения кода находите?
Сначала запускаются тесты, потом отладчик на сломанных. И все сразу станет понятно.
edogs
Это из серии «знаю английский со словарем» или «подумаешь что я ничего не знаю — в гугле найду». Программист на php якобы знающий php и не способный прочитав код увидеть ошибку — вызывает уныние.
Впрочем да, сейчас пошла такая тенденция, «я программист, на фига мне знать язык, посмотрю в документации, подскажет ide, если что маме позвоню». Обычно это какие-нибудь сишники или явовцы, которые «точно знают» что php фигня и учить его не надо. По нам так гнать таких прогеров тряпками. Архитектор ведущий проект может не знать не то что порядок аргументов, вообще языка. Но программер заявляющий что он знает php и при этом не знающий его азов (которые при практическом использовании, а не теоретических рассуждениях, заметим, невозможно не знать!) — что он вообще знает тогда? — это нонсенс.
coh
Вы ошибаетесь, там достаточно много сложных вопросов.
Сдавал тест на 5.3, попались вопросы на безопасность,
были вопросы на неочевидные особенности языка (очень много!),
были вопросы по SQL,XML
были вопросы по тонкостям наследования, late static binding и прочее.
Не уверен как сейчас, в то время тест был очень сложен для middle не то что junior