Юрий Трухин, эксперт по облачным технологиям InfoboxCloud
1. Разработчику PHP необходимо уметь строить алгоритмы решения задач, знать основные существующие алгоритмы и паттерны разработки, уметь находить наиболее простое и поддерживаемое решение, отстаивать свою точку зрения. Код PHP-разработчика должен быть чистым, читаемым и тестируемым. Важны знания по написанию безопасного кода, базовые навыки системного администрирования, умение развернуть как продакшн-сервер, так истек разработки. Важны глубокое знание PHP, HTML, JS, MySQL, PostgreSQL и умение создавать высоконагруженные решения на этих технологиях.
2. Мы используем NetBeans и IntelliJ IDEA (PHPStorm) для разработки, но нужно уметь использовать и редакторы Sublime, VIM или emacs. Также необходимо знание MySQL Workbench, linux-консоли. Полезным будет знание Python и bash-скриптинга.
3. Образование высшее техническое. Свое портфолио (например, на github), которое даст понять об уровне работ. Необходимо быть адекватным, любить свою работу и хотеть делать мир лучше. Умение постоянно учиться очень важно, так как в компании задачи могут быть очень разными.
4. Как правило, от трех лет работы по профилю. Плюсом будет опыт работы в проекте с высокими нагрузками.
5. Необходимо знание и понимание принципов работы хостинга и облачных технологий, умение работать с различными веб-сервисами и API. Желателен опыт работы с биллинговыми системами. Плюсом будет знание платформы Parallels Automation.
Антон Степаненко, руководитель отдела разработки платформы, Badoo
1. Я бы выделил три ключевых момента.
Первый – язык PHP во всех его формах и проявлениях, то есть как веб-разработка, так и консольные скрипты; как процедурное, так и объектно-ориентированное программирование; как использование готового функционала, таки знание основных алгоритмов и структур данных. Важно не просто знать синтаксис и стандартную библиотеку, важно понимать сильные и слабые стороны языка, уделять внимание производительности того или иного кода, понимать, что стоит реализовывать на PHP, а с чем лучше обратиться к другим технологиям.
Второй – SQL вообще и MySQL в частности. Разработчик должен уметь писать запросы любой сложности и анализировать их производительность. Плюсом будет понимание внутреннего устройства и механизмов MySQL, атакже основных принципов работы реляционных баз данных.
И, наконец, последнее, но, на мой взгляд, самое важное. Это ориентированность на результат и самостоятельность. Разработчик должен понимать, что он не просто пишет код, а делает продукт. Важно умение вести задачу отпервой строчки кода и до анализа результатов работы кода в продакшене. Сюда входит умение взаимодействовать с коллегами из самых разных отделов, будь то разработка, тестирование или продуктовые менеджеры. Мы ценим умение работать без необходимости постоянного микроменеджмента со стороны руководителя, способность трезво оценивать сроки, расставлять приоритеты и вовремя сигнализировать о проблемах.
2. Все довольно демократично. Как правило, это ноутбук с операционной системой MacOS либо GNU/Linux (любой дистрибутив, но наиболее распространен Ubuntu), работа на Windows не поощряется. Самая популярная среда разработки – PHP Storm, хотя здесь ограничений нет. Далее следует довольно стандартный набор: JIRA, git, MySQL, PHP, nginx, браузер и клиент для базы данных по вкусу. Существует множество утилит, написанных ииспользуемых разработчиками внутри компании, которые облегают какие-то повседневные операции, будь то отладка кода, анализ производительности или код-ревью. По необходимости докупается платное программное обеспечение, если его использование оправдано.
3. Никаких строгих требований нет, в первую очередь мы смотрим на те навыки, которые кандидат демонстрирует на собеседовании. Но образование ведущих технических вузов страны, например, ВМиК МГУ или МФТИ, является плюсом.
4. Аналогично предыдущему пункту. Определяющим является то, что человек умеет и как себя показывает. Но наличие опыта работы в крупных продуктовых компаниях, а также опыт работы с высокими нагрузками мы ценим.
5. Пожалуй, здесь можно упомянуть только повышенные требования к производительности и надежности кода. У нашего проекта очень большая аудитория, соответственно речь идет о десятках тысяч запросов в секунду, географически удаленных друг от друга на тысячи километров серверах и сотнях терабайтов данных. И, несмотря на все сложности, мы должны сохранять высокую скорость работы и не терять данные. Соответственно каждый разработчик должен это понимать, ценить, уметь писать код, удовлетворяющий этим требованиям, а также находить и устранять проблемы в этой области.
Александр Горный, директор по информационным технологиям Mail.Ru Group
1. Для любого программиста самое важное – разбираться в устройстве и принципах работы компьютерных систем: без этого понимания он будет писать код вслепую. Если вы PHP-разработчик, вам также нужно знать азы фронтенда. Они существуют не в вакууме – это части единого целого, и сильный специалист просто обязан понимать, как они взаимодействуют. Очень важно уметь общаться с людьми и понимать, что они хотят на самом деле, даже если их запросы выражены не совсем (или даже совсем не) техническим языком.
2. Помимо языка, понадобится знание популярных фреймворков – Zend, Yii и так далее. Подразумевается, что хороший специалист следит за обновлениями версий языка. В базовый набор также входят HTML, CSS, знание JavaScript и AJAX, jQuery и Bootstrap, основы SQL и оптимизации запросов.
3. Мы не просим показать диплом на собеседовании.
Вопрос образования важный, но не принципиальный. В вузах студентам дают в основном теоретическую базу, а практического опыта студентам приходится набираться за пределами стен альма-матер.
Мы, со своей стороны, стараемся переломить эту ситуацию – на базе МГТУ и МГУ работают наши образовательные проекты, Технопарк и Техносфера, где ребята могут получить как раз «боевой» опыт веб-разработки.
Кстати, опыт наших образовательных проектов подтверждает, что самообразование может успешно компенсировать «непрофильность» факультета: например, во время последних вступительных испытаний в Технопарке самый высокий балл получил студент юридического факультета.
4. Как правило, в вакансиях указано требование опыта работы от двух лет. Понятно, что это среднее значение – кому-то может понадобиться больше времени на то, чтобы набраться опыта, а кто-то осваивается быстрее.
5. Здорово, если у человека есть опыт работы с высоконагруженными проектами. С другой стороны, если специалист сильный, а такого опыта нет – в Mail.Ru Group он его очень быстро приобретет. Для нас по-настоящему принципиально, чтобы разработчик сам пользовался продуктом, над которым он приходит работать: в игровом департаменте будет лучше геймеру, над серверной частью социальной сети будет эффективнее работать тот, кто пользуется соцсетями. Бывали случаи, когда человек приходил пробоваться на позицию в одном департаменте, а на собеседованиях выяснялось, что интереснее ему будет в другом – там он в итоге и оставался.
Когда твоим продуктом пользуются миллионы, важно, чтобы ты был одним из них.
Вадим Харитонов, Web Developer в Wargaming
1. Он в первую очередь должен быть хорошим программистом – настоящим специалистом в своей области: знать методы алгоритмизации, разбираться в объектно-ориентированном программировании и основных паттернах, небояться модульного тестирования и так далее.
Есть и более специфические требования к навыкам. Это те технологии, с которыми придется работать: CMS или Framework (первые – фавориты веб-студий, вторые широко используются в продуктовых компаниях).
Кроме того, здесь (как и везде сейчас) нужен английский язык. С ним намного проще.
2. Если говорить о IDE, то для разработки на PHP популярны две системы: платная PHPStorm и бесплатная NetBeans.
Большинство веб-сайтов работает на UNIX-подобных системах, поэтому знание этой консоли всегда пригодится. Кроме того, разработка на системах UNIX всегда уменьшает количество проблем при релизе проекта, что, несомненно, огромный плюс.
Веб-серверы, как правило, на основе Apache или Nginx + PHP-FPM. С версии PHP 5.4 встроили внутренний сервер в сам язык. Для разработки его может вполне хватит, но лучше использовать то, что собираетесь запускать на«боевой» машине.
Исторически сложилось, что MySQL была и остается самой популярной базой данных при разработке веб-проектов на PHP.
Очень важным процессом являются отладка и профилирование. Сюда входят Xdebug, Blackfire.io, xhprof и так далее. Удобнее всего пользоваться модулем Xdebug вместе с IDE, они вне конкуренции.
Это минимальный LAMP-стек. Расширение списка и добавление новых тулов зависит от выполняемых задач. Но этого пакета должно хватить, чтобы написать первое веб-приложение на PHP.
3. Обязательное наличие диплома о высшем образовании не требуется. Важна не «корочка», а запас знаний и определенная подкованность в этой области. Если человек готов справляться с заданным объемом работы и делать этокачественно и в срок, то он имеет все шансы рассматриваться как потенциальный кандидат.
Сама компания немало инвестирует в развитие сотрудников. Для специалистов организуются различные тренинги, курсы и конференции. У нас очень хорошо построен процесс обмена знаниями: узнал что-то новое – расскажи другим. Кроме того, в Wargaming учиться и прокачиваться профессионально располагает обстановка: экспертиза очень ценится.
4. Обычно берем людей, у которых за плечами как минимум два года опыта. Исключения крайне редки, за все время к нам попали всего несколько «нулевых» человека.
Важно быть знакомым (желательно близко) с теми технологиями, которые используются в компании. Если до прихода на собеседование кандидат не имел дела с этим софтом, то сразу во все тонкости вникнуть будет довольно сложно. Несмотря на то что порог вхождения в сам язык низкий, владение языком не является ключевым критерием при приеме на работу.
5. Конечно. У нас очень остро стоит вопрос оптимизации нагрузки, поэтому важно наличие экспертизы по ее уменьшению. Обязательный пункт требований – умение писать асинхронный код и использовать по максимуму ресурсы на физической машине.
Мы работаем с нереляционными базами данных, поэтому у соскателя на вакансию знакомство с ними не должно быть поверхностным.
В целом стек используемых технологий внушительный, что очень сильно отражается на требованиях.
Антон Регеда, CTO LinguaLeo
1. Любой программист должен знать компьютерные технологии: структуры данных, алгоритмы. PHP – это Open Source-проект, вокруг него образовалось целое сообщество. Важно быть частью этого комьюнити, чтобы понимать, как и почему развивается язык.
2. Инструментарий PHP-программиста: среда разработки, средства отладки кода, средства развертывания и тестирования приложения, менеджер пакетов, системы контроля версий кода. Из конкретных примеров – PHPUnit, Composer, PhpStorm, NetBeans, Xdebug, phpdbg, Vagrant, Git.
3. Что касается образования: для LinguaLeo не принципиально, закончил соискатель Стэнфорд или Волжский политехнический техникум. Важен талант и опыт человека.
4. Если кандидат знает, как работает интерпретатор PHP, как база данных обрабатывает внутри себя запросы, какие существуют паттерны проектирования, и для каких задач их лучше применять, то это наш человек.
5. Создание продукта для банковской сферы может отличаться от процесса работы над сервисом для массового изучения английского языка. Однако мы не придаем большого значения тому, имеется ли у человека опыт работы именно в нашей области. Нам важнее команда. Наш сотрудник в первую очередь разделяет ценности компании и поддерживает ее культуру. Поэтому требования простые: умение играть в команде, работа на результат, адекватность, любопытство и широкий кругозор.
Исследовательский центр портала Superjob.ru специально для «Системного администратора» изучил предложения работодателей. Программист PHP входит в ТОП-5 самых востребованных программистов. На них приходится 3,5% запросов прямых работодателей. При этом программисты PHP относятся к весьма дефицитным специалистам: в среднем на 1 вакансию приходится 1,1 резюме.