28.06.2015
Преди няколко седмици добавих в CV-то си поредния сертификат - Zend Certified PHP Engineer.
Трябва да си призная, че доста ме зарадва надписа "PASS" в края на изпита. Човек би предположил, че след 10 години писане на PHP съм минал през изпита като горещ нож през масло, и донякъде ще е прав, но не съвсем.
Да започнем с това, че никъде няма конкретна информация точно какво представлява изпита. Има официални материали, които закупих когато разбрах, че трябва да се сертифицирам, но те даваха общи насоки и нищо повече. Абсолютно никой не беше споделил опита си при вземане на изпита и не знаех точно какво да очаквам.
Освен официалния study guide си купих и примерен изпит от сайта на Lorna Jane - тя поне по-подробно бе описала какво ме чака в деня на изпита, но все пак до последно не знаех например дали и как мога да се върна на конкретен въпрос - в интернет имаше противоречива информация, а никъде нямаше официален скрийншот или нещо, което да те насочи за това какъв ще е софтуера, в който се попълва теста.
Няма много информация защото изпитът не е много популярен, въпреки, че е единственият възможен PHP сертификат с някаква тежест (мисля, че аз бях едва 60-тия българин от 2005-та насам, които взима изпита). Слабият интерес може би се дължи на това, че е спорно какви знания доказва взимането на този изпит. По мое мнение се изискват доста знания, които не са специфични за PHP - все неща, които всеки web разработчик трябва да знае, но теоретично мога да пиша PHP не за web и да не разбирам от front-end например. Доста от кода във въпросите бих окачествил като anti-patterns - код, който е допустимо да не разбереш, защото е недопустимо да го видиш някъде в production. Не смятам, че умението да четеш отвратителен код те прави по-добър разработчик, същото важи и за запаметяването на всички неконсистентности в езика (тук беше първо needle после haystack, a в другата функция, онази без подчертавката - обратното). Напротив - дори смятам, че на всички в PHP общността трябва да ни е неудобно от тези недомислици, а не да са включени във въпроси на изпит.
Въпросите са разделени на категории и подкатегории, за които в официалния guide е посочено с каква относителна тежест са за оценката. Неприятното е, че никой не знае на колко въпроса трябва да отговориш вярно за да минеш (точно заради тежестите). Липсата на ориентир те кара да се опитваш да си на 100%, което пък е нереално. Връщайки се към категориите - някои не се отнасят пряко към езика, а други са твърде специфични - например, въпреки 10 годишния ми опит имаше 2 подкатегории, на които изрично обърнах внимание преди изпита, защото осъзнах, че не съм ги използвал никога (DOM функциите например).
Имаше и неща, които ми направиха положително впечатление още докато се готвех и правех пробни тестове из интернет - много въпроси за ООП, и то с голяма тежест. Хареса ми, че има акцент върху новите неща в езика, това, което обаче не ми хареса е въпрос, в чиито код имаше синтаксис от PHP 5.6, а изпита е изрично за PHP 5.5 - донякъде е важно да знаеш кое в коя версия се появява, но все пак ми се стори некоректно.
Като цяло, бих казал, че една трета от въпросите бяха елементарни и изискващи просто бегъл опит с PHP и web разботка, за да се отговорят. Следващата една трета бяха въпроси, които според мен наистина доказват, че си запознат с езика в дълбочина, знаеш добрите практики и ги прилагаш. За последната една трета смятам, че бяха въпроси, които са на ръба на смисленото - edge-cases и anti-patterns, които не смятам, че доказват друго, освен, че е имало много болка в живота ти, ако си свикнал да четеш и оправяш такъв код.
Не знам колко информация е коректно да дам, предвид, че всичко е платено и пълно с disclaimers, но поне базови неща мисля, че мога да споделя:
За това се сещам към момента, ако мога да бъда полезен на някой - да ми пише едно писмо и ще помагам с каквото мога.