О том, что такое Zend Certified PHP Engineer (ZCE) и как к нему готовиться было достаточно статей. Я опишу свое мнение о ZCE (PHP 5.5) и свой процесс подготовки за неделю (с учетом моего пятилетнего опыта практической разработки).

Взгляды на 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.

image

Стоит ли сдавать?


На мой взгляд, новичку будет полезна подготовка к ZCE как средство мотивации и как последующий критерий отбора при поступлении на работу, а уверенному в своих знаниях и опыте – как самопроверка. Для быстрой и эффективной подготовки могу посоветовать работу в паре или воспользоваться наставничеством бывалых людей, например Lorna Jane Mitchell или Lukyanchikov Alexandr.

Да, чуть не забыл, помимо всего прочего, Zend подарил вечную лицензию на Zend Studio Basiс, разместил в каталог сдавших экзамен (yellow pages) и возможность вступить в закрытую группу LinkedIn (Zend Certified Engineers).

Комментарии (22)


  1. skvot
    08.06.2015 00:08
    +1

    Скажите пожалуйста, дает ли подобный сертификат реальные преимущества при устройстве на работу в России и за ее пределами?
    И, если я правильно понимаю, вопросы, по сути, на знание документации, то есть наличие такого сертификата никак не отражает способность человека программировать?

    P.S.
    Забавно, тестируют людей на знание документации, в которой местами нет даже логики порядка передачи аргументов в функции…


    1. edogs
      08.06.2015 00:18
      +1

      Скажите пожалуйста, дает ли подобный сертификат реальные преимущества при устройстве на работу в России и за ее пределами?
      За рубежом небольшой бонус есть, т.к. там понимают что это за сертификат. В россии нет. Но это опять же, относится только к вакансиям на среднего программера. На топ уровне этот сертификат преимущества не дает.

      И, если я правильно понимаю, вопросы, по сути, на знание документации, то есть наличие такого сертификата никак не отражает способность человека программировать?
      А что такое «способность программировать»? Есть, например, вопросы на паттерны. Есть вопросы «что даст такой-то код при выполнении».

      Забавно, тестируют людей на знание документации, в которой местами нет даже логики порядка передачи аргументов в функции…
      Так потому и тестируют. Была бы логика — тестирования не надо было бы, точнее достаточно было бы 1 вопроса. А раз логики нет, то надо тестировать, иначе как Вы код будете писать? В мануал лезть каждые 5 минут?


      1. skvot
        08.06.2015 00:23

        Спасибо за ответы!

        А что такое «способность программировать»? Есть, например, вопросы на паттерны. Есть вопросы «что даст такой-то код при выполнении».


        Согласен, довольно абстрактный вопрос задал.

        Так потому и тестируют. Была бы логика — тестирования не надо было бы, точнее достаточно было бы 1 вопроса. А раз логики нет, то надо тестировать, иначе как Вы код будете писать? В мануал лезть каждые 5 минут?


        Этот момент не совсем понял :) В реальной жизни у меня есть ide, которая поможет мне вспомнить порядок аргументов в str_replace


        1. edogs
          08.06.2015 00:36
          -3

          В реальной жизни у меня есть ide, которая поможет мне вспомнить порядок аргументов в str_replace
          Это если Вы пишите код, да и то, сверяться постоянно с подсказкой или написать на автомате — разница есть.

          А что если Вы смотрите чужой код в поисках ошибки, а ошибка может быть в перепутанных местами аргументах? Вот тут знание документации будет совсем не лишним.


      1. symbix
        08.06.2015 00:33

        > За рубежом небольшой бонус есть, т.к. там понимают что это за сертификат. В россии нет.

        Мне кажется, это потому что здесь понимают, что это за сертификат :-)

        > что такое «способность программировать»

        Понимать и составлять алгоритмы, структуры данных, архитектуру приложения.

        > раз логики нет, то надо тестировать, иначе как Вы код будете писать? В мануал лезть каждые 5 минут?

        На php пишу уже 11 лет. Порядок аргументов в не самых часто используемых функциях-методах не помню, и не собираюсь: в IDE всегда есть подсказка, которая читается за ту 0.1 секунды, пока нажмешь enter в списке автокомплита.

        Код написать — это вообще не проблема, основная проблема — подумать, спроектировать приложение, разработать алгоритмы. Тест на code monkey.


        1. edogs
          08.06.2015 00:45

          Мне кажется, это потому что здесь понимают, что это за сертификат :-)
          Скорее наоборот:)
          В россии, например, бытует мнение, что это «какая-то фигня в онлайне, школьника друга попросил, он пройдет и все».
          На деле же для сдачи все же требуется определённое количество знаний (учитывая цену теста в 100+ баксов готовится приходится достаточно серьезно, с запасом), на тест надо приходит с 2 документами (т.е. васю не попросишь прийти) и начитить невозможно (смартфоны, учебники — все за классом остается).
          И да, там есть вопросы на xml парсинг (требующие логики), на знание паттернов (требующих не просто знания языка), на знание owasp тех же (что тоже полезно) и так далее.

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

          Порядок аргументов в не самых часто используемых функциях-методах не помню, и не собираюсь:
          В тестах только часто используемые:)

          в IDE всегда есть подсказка, которая читается за ту 0.1 секунды, пока нажмешь enter в списке автокомплита.
          Т.е. Вы код только пишите? А чужой не читаете?:) Например, на предмет ошибок? Не доводилось? За 11 лет-то?:) Или Вам при чтении кода порядок аргументов тоже автокомплит подсказывает?

          Код написать — это вообще не проблема, основная проблема —
          Основная проблема не в том, что бы написать код и даже не в том, что бы спроектировать приложение. Основная проблема в людях, которые считают что написать код это вообще не проблема:)
          Так, например, мы через раз встречаем мануальные функции реализованные программером, который не читал мануал и не в курсе что они в языке есть. sic! Вдумайтесь! В проекте на 120кб кода около 40кб кода это реализация и так существующих штатных php функций. sic!

          Тест на code monkey.
          Это тест на знание языка программирования, чего-то другого от него ожидать это странно.
          Вы-то чего от него ожидаете-то? Вопросов про расчет оптимальной траектории полета до солнца на сверхпротонных фазерах?:)


          1. symbix
            08.06.2015 04:55

            > Но это же тест на знание 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, блин, еще бы про синглтон спросили.


            1. edogs
              08.06.2015 10:29
              +1

              «Знание языка» — это само по себе бесполезно.
              Т.е. Ваша претензия к самому факту существования теста на знание языка?:) А не к его наполнению и качеству?
              Достаточно странная идея, с нашей точки зрения, отрицать полезность для разработчика на php знать язык php.


              1. symbix
                08.06.2015 13:52
                -1

                Это было между прочим, основная проблема, конечно, в качестве.

                Я не против существования теста на знание языка и его стандартных библиотек, но он должен соответствовать реальности. В реальности, скажем:
                — с 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...), зато есть вот ЭТО.


                1. edogs
                  08.06.2015 15:35
                  +1

                  — с mysqli никто вручную не работает, для этого есть DBAL/ORM;
                  Вот так в резюме появляются фразы «отличное знание jquery, с javascript не знаком»:)
                  Или еще круче бывает, wordpress программист не знающий половины базовых php функций даже в контексте их существования, но знакомый с codex-ом.

                  Так не проходите тест на php, если Вы работаете с ORM. Идите найдите тест на ORM и пройдите его.
                  В чем проблема-то? Вы с php функциями не работаете, но обижаетесь что их знание обязательно для прохождения теста на язык php, жесть просто.

                  По остальному — если Вы знаете php и постоянно работаете с ним, никакой проблемы с приведенными Вами примерами нет.
                  Если же Вы только что пришли «с другого языка» или «работали только с надстройками над php типа ORM», то этот тест Вы не пройдете и… это будет абсолютно справедливый результат, потому что языка Вы не знаете, пусть даже программист Вы великолепный.


                  1. symbix
                    08.06.2015 16:47

                    Еще раз.

                    Знать — не значит постоянно пользоваться и помнить все детали.

                    Знать, что есть mysqli, как он работает, и при необходимости уметь написать свою обертку — надо.
                    Помнить, как там что называется, кроме самого распространненного — это странно.

                    Вот вам вопрос в стиле Zend Certification (чур, не подглядывать).

                    Как получить дополнительные результаты multiquery-запроса?

                    1) mysqli::get_more_results()
                    2) mysqli::more_results()
                    3) mysqli::get_multi_results()
                    4) mysqli::multi_results()


                    1. edogs
                      09.06.2015 02:07

                      Знать, что есть mysqli, как он работает, и при необходимости уметь написать свою обертку — надо.
                      Это уровень образовательного учреждения. Ничего не знать, но знать где найти. Это и называется «знать со словарем».

                      Помнить, как там что называется, кроме самого распространненного — это странно.
                      А вот это уровень практика не только знающего язык, но и практикующего его.

                      Вот Вы вроде по русски пишите, вероятно знаете русский язык.
                      Задумайтесь — Вы в принципе «правила русского языка знаете, знаете как составлять предложения, знаете где ставить Ъ» (тот подход что рекламируете Вы) или же не задумываясь пишите правильно и в фразе «извени за кофе она ни остылл» Вам на автомате что-то режет глаз?
                      Так вот тест на язык подразумевает второй тип знания, а не первый.


                      1. symbix
                        09.06.2015 10:59

                        Вы не ответили на самую интересную часть. :-)


                        1. edogs
                          09.06.2015 11:03

                          Нет правильного ответа у Вас там.

                          В тему топика как раз статья появилась habrahabr.ru/post/259865 — задумайтесь.


                          1. symbix
                            09.06.2015 15:27

                            > Нет правильного ответа у Вас там

                            Верно. А в мануал подглядывали? :)

                            > задумайтесь

                            О чем? Все, кроме хака с переопределением true в неймспейсе — знал, а за применение же в продакшен-коде подобных трюков надо бить по рукам указкой.


                            1. edogs
                              09.06.2015 16:24

                              Верно. А в мануал подглядывали? :)
                              Не-а. Просто мы пишем на php. Но если бы писали на «вордпресс, джейквери или ОРМ», то конечно не ответили бы на этот вопрос из теста по php:)

                              О чем? Все, кроме хака с переопределением true в неймспейсе — знал
                              О том что там почти все вопросы требуют знания языка куда выше чем уровень "Помнить, как там что называется, кроме самого распространненного".


                1. julia_morg
                  09.06.2015 10:22
                  +1

                  Ну вообще, если вы не работаете с mysqli, это не значит, что никто не работает: )
                  Точно так же и с написанием автолоада — иногда это приходится делать.
                  Поэтому, вероятно, дело не в том, что это все «бред собачий», а в том, что вы немного в другой сфере работаете.


          1. OnYourLips
            08.06.2015 10:21

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

            > Вы-то чего от него ожидаете-то? Вопросов про расчет оптимальной траектории полета до солнца на сверхпротонных фазерах?:)
            Если честно, то я ожидал тест хотя-бы уровня среднего разработчика. Но там нет ничего выше джуниорского уровня.

            > Т.е. Вы код только пишите? А чужой не читаете?:) Например, на предмет ошибок? Не доводилось? За 11 лет-то?:) Или Вам при чтении кода порядок аргументов тоже автокомплит подсказывает?
            А вы ошибки методом чтения кода находите?
            Сначала запускаются тесты, потом отладчик на сломанных. И все сразу станет понятно.


            1. edogs
              08.06.2015 10:37

              Если честно, то я ожидал тест хотя-бы уровня среднего разработчика. Но там нет ничего выше джуниорского уровня.
              А почему? Почему в тесте на знание php Вы ожидали тестирование на разработчика?

              А вы ошибки методом чтения кода находите?
              Сначала запускаются тесты, потом отладчик на сломанных.
              Это из серии «знаю английский со словарем» или «подумаешь что я ничего не знаю — в гугле найду». Программист на php якобы знающий php и не способный прочитав код увидеть ошибку — вызывает уныние.
              Впрочем да, сейчас пошла такая тенденция, «я программист, на фига мне знать язык, посмотрю в документации, подскажет ide, если что маме позвоню». Обычно это какие-нибудь сишники или явовцы, которые «точно знают» что php фигня и учить его не надо. По нам так гнать таких прогеров тряпками. Архитектор ведущий проект может не знать не то что порядок аргументов, вообще языка. Но программер заявляющий что он знает php и при этом не знающий его азов (которые при практическом использовании, а не теоретических рассуждениях, заметим, невозможно не знать!) — что он вообще знает тогда? — это нонсенс.


            1. coh
              08.06.2015 15:13
              +1

              Но там нет ничего выше джуниорского уровня.

              Вы ошибаетесь, там достаточно много сложных вопросов.
              Сдавал тест на 5.3, попались вопросы на безопасность,
              были вопросы на неочевидные особенности языка (очень много!),
              были вопросы по SQL,XML
              были вопросы по тонкостям наследования, late static binding и прочее.
              Не уверен как сейчас, в то время тест был очень сложен для middle не то что junior


  1. la0
    08.06.2015 16:45

    Чтобы не повторяться, просто добавлю ссылку на моё мнение и обсуждение годичной давности.
    habrahabr.ru/post/229191/#comment_7763809


  1. Alex_At_Net
    08.06.2015 17:21
    +1

    Проходил сертификацию очень давно — www.zend.com/en/yellow-pages/ZEND005322

    Пока работу или работников не ищите — разницы нет. Как начинаете искать — очень даже разница есть :)