Александр Владимирович Серков, инженер-программист (OS X), ООО «Доктор Веб»
1. Примерно такими же, как и любой другой программист для любой другой платформы/области, – он должен знать инструментарий, с которым работает, и уметь его использовать. А также не помешает умение обучаться и находить ответы на неожиданные вопросы в приемлемые сроки. В дополнение ко всему этому хорошо бы еще знать язык программирования Objective-C (если писать что-то, связанное с GUI, то без Objective-C пока скорее всего не обойтись, да и часто некоторые системные вещи требуют знания этого языка) и иметь представление о наиболее важных библиотеках (фреймворках), являющихся частью этой операционной системы. О системах контроля версий, коммуникабельности и умении работать в команде говорить не буду.
2. Разнообразный. OS X – это более-менее современная и быстро развивающаяся ОС, и для нее подходит почти весь инструментарий, доступный для других *nix-like (и не очень) операционных систем. Но все же Objective-C, сопутствующие фреймворки и Хсode (IDE для OS X от Apple) пока являются «главным» инструментом для разработчика (Swift еще скорее всего все же игрушка, но в перспективе...). И, конечно, С/С++. Многое в OS X написано на этих языках, даже если имеет «официальный» интерфейс на Objective-C.
3. Особенных требований именно к образованию у нас нет. Мы считаем, что для сотрудника больше важны знания и опыт. Но, насколько я знаю, большинство сотрудников нашей компании все-таки имеют высшее образование.
4. Насколько я знаю, от трех лет. Однако реально уровень опыта, как мы считаем, все-таки определяется не годами, а выполненными проектами/задачами, их сложностью и величиной.
5. Да, конечно. Мы же компания, занимающаяся информационной безопасностью. Поэтому для нас очень важна внимательность к мелочам, умение писать стабильный, читабельный и безопасный код. Умение читать и понимать чужой код тоже не будет лишним. И, конечно, в принципе важен большой кругозор – человек должен не просто знать, как работают те или иные подсистемы той или иной ОС, но и понимать их принципы работы, понимать то, как они связаны между собой, как взаимодействуют. И как на эти подсистемы влияет пользовательский код, или, наоборот, как подсистемы влияют. В общем, человек должен представлять себе, как работают современные программы. От самого низкого уровня до самого высокого.
Виктор Брыскин, Senior iOS Developer, Comindware (www.comindware.com/ru/)
Полина Семенюк, HR-менеджер, Comindware
1. В.Б.: Разработчик под OS X (сейчас операционная система называется именно так) не сильно отличается от любого другого разработчика, и особых специфических требований здесь практически нет. Разница только в инструментарии и API.
Абсолютно точно необходимо знание языков и фреймворков, которые применяются на платформе, – в основном из языков это Objective-C. Сейчас, впрочем, набирает популярность Swift, на котором также можно вести разработку. Нелишним будет и знание С++, умение писать на этом языке очень помогает сделать жизнь разработчика проще, в связи с тем, что Objective-C – очень старый язык, лишь в последнее время начавший активно развиваться, и многие вещи проще писать на С++. С другой стороны, система ООП и ObjC Runtime, применяющаяся в Objective-C, позволяет очень просто писать довольно сложно реализуемые на других языках вещи.
В решении задач очень помогают навыки автоматизации с использованием скриптовых языков – это Shell, Python или Ruby.
Естественно, нужно понимать специфику OS X в плане распространения и развертывания приложений. В ОС встроен магазин приложений, которым можно и нужно пользоваться.
2. В.Б.: Основная среда разработки – это, конечно же, IDE Xcode, но возможны и альтернативы, например, AppCode от JetBrains. Этого вполне достаточно для того, чтобы разрабатывать приложения – в Xcode встроены и инструменты разработчика для профилировки приложений и даже клиент системы контроля версий, поддерживающий SVN и Git. Однако большинство разработчиков пользуются внешними Git-клиентами, выбор которых – вопрос привычки и дело вкуса.
3. П.С.: Мы ищем людей с высшим образованием. Более того, у нас есть сотрудники, которые продолжают образование, например, учатся в аспирантуре. Мы рады, когда наши сотрудники продолжают совершенствоваться в профессиональном плане, и поддерживаем их в этом.
4. П.С.: Наш подход не кардинально отличается от других компаний на рынке, для Comindware важно, чтобы сотрудник имел опыт работы в данной отрасли не менее трех лет. Для нас также очень важно, чтобы сотрудник стабильно работал на предыдущих местах, а не менял работу несколько раз в течение года.
5. П.С.: Каких-то особых требований, связанных именно с нашей компанией, нет. Одновременно есть ряд технических требований, которые для нас важны, а именно:
- Уверенное владение Objective-C, iOS Guidlines
- Cocoa Pods, Frameworks, static libraries
- Знание шаблонов проектирования и принципов SOLID
- Знание ARC и MRC
- Multithreading, GCD
Павел Морозов, главный OS X-разработчик, Paragon Software Group/mobile applications (www.slovoed.com)
1. В первую очередь любой сотрудник, вовлеченный в создание программного обеспечения для OS X, должен быть убежденным пользователем этой операционной системы, особенно программист. Революционные идеи Apple и их воплощение в действительность в виде готовых продуктов являются примером для подражания даже у конкурентов. Именно поэтому качественное приложение для OS X должно соответствовать фирменному стилю Apple. Основой такого соответствия является доскональное владение принципами создания идеальных приложений для OS X, изложенными в библии разработчиков, известной под названием OS X Human Interface Guidelines.
Естественно, разработчик должен уверенно владеть языком Objective-C и как минимум иметь представление о стремительно набирающем популярность языке Swift.
Очень важен также и общий кругозор в смежных областях, особенно в веб-технологиях.
Крайне приветствуется знание одного или более скриптовых языков, подобных Perl/Python/Ruby/PHP/Bash/Apple Script.
2. Основным средством разработки является Xcode с сопутствующими инструментами. Альтернативные IDE, такие как AppCode, у нас также в ходу, как и просто различные тестовые редакторы. Для коллективной работы и обмена информацией используется Redmine.
3, 4. Идеальный кандидат – это специалист с высшим техническим образованием и двумя-тремя годами опыта программирования для Mac OS X или iOS. Тем не менее соискатели, еще не окончившие вуз, также могут нас заинтересовать. Несомненным плюсом будет дополнительное образование в виде профильных спецкурсов, наличие успешных продуктов в App Store и активность в Open Source-сообществах.
5. Из специфичных требований заслуживает упоминания способность программиста работать в многозадачном режиме. Как правило, сотруднику приходится одновременно работать над несколькими проектами, быстро переключаясь между ними, когда очередная задача уходит на другие этапы жизненного цикла или возвращается обратно в девелопмент.
Владимир Кукушкин, Mac Applications Development Group Manager, «Лаборатория Касперского»
1. Программист под OS X ничем не отличается от любого другого программиста – прежде всего он должен уметь объяснить программе, что она должна сделать.
2. Для того чтобы начать разработку приложений под OS X, помимо наличия устройства с этой операционной системой, нужно скачать из Mac App Store среду разработки – Xcode. Для большинства задач этого будет достаточно. Плюс под OS X встречаются реализации инструментов, знакомых по разработке под другие платформы, например, можно использовать vim, cmake, Qt, клиенты для всевозможных систем контроля версий. В составе Xcode для отладки есть lldb, а для профилирования – Instruments.
3. Такие же, как и к любому другому программисту. Несомненным плюсом будет прохождение курсов в онлайн-университетах, где можно найти тематические курсы по разработке под платформы Apple. Но нужно понимать, что такие курсы – никак не замена фундаментальному техническому образованию.
4. Опять же – такие же, как и у всех. Но есть один нюанс. В случае с разработкой, не связанной непосредственно с OS X, ее специфичными функциями или GUI, бывает очень ценен опыт разработки под Unix, ведь OS X – под капотом это тот же Unix.
5. «Лаборатория Касперского» – большая компания с большим количеством продуктов, выпускаемых для разных платформ. Нужно быть готовым к тому, что большая часть кода и технических решений (например, антивирусный движок) используется на трех-четырех платформах, и об этом нужно всегда помнить. Соответственно, и большая часть кода не имеет непосредственного отношения к OS X.
Дмитрий Обухов, основатель и разработчик, Wirelessheads
1. Хоть я и не люблю узкую специализацию и сам термин «программист под OS X», но, на мой взгляд, человек, который разрабатывает приложения под платформы от Apple, должен действительно обладать неким набором навыков, которые, по большому счету, к программированию не имеют отношения. Во-первых, он должен разбираться в проектировании интерфейса. Многие считают, что интерфейсом должен заниматься дизайнер (и это так и есть), но на практике, если человек, который пишет код, не интересуется интерфейсами или не имеет «чувства прекрасного», проект ждут большие проблемы. Во-вторых, OS X быстро развивается как со стороны Apple, так и со стороны комьюнити, появляются новые фреймворки и даже языки – за всем этим нужно успевать следить, нужно быть на острие технологий, и без большого вовлечения здесь не получится. И, наконец, разработчик под OS X должен быть и разработчиком под iOS (обратное – не верно). Так получается, что все новые технологии и практики появляются сначала на iOS, их необходимо перенимать и использовать на маке.
2. Xcode (IDE от Apple, бесплатное и есть все необходимое), CocoaPods (менеджер зависимостей), Sketch (векторный графический редактор). Все остальное опционально.
3. Не думаю, что компании предъявляют какие-то требования к образованию. Во-первых, в России разработчиков не учат, во-вторых, на рынке сейчас дефицит специалистов. В любой профессии основную роль играет опыт, разработчики не исключение, скорее даже наоборот, опыт – основной показатель.
4. Требования очень разные, и, если говорить об OS X, очень часто сотрудников приглашают развивать или поддерживать существующий продукт. Часто этот продукт портирован с другой платформы и написан на C/C++, поэтому в описании вакансии можно увидеть требования знания C++.
Что касается моих требований, основной показатель для меня – это наличие законченных коммерческих продуктов, не обязательно даже под OS X. Я считаю, что технические знания приобретаются быстро, но их не всегда бывает достаточно.
5. Разработчик должен быть погружен в специфику деятельности компании. Если компания занимается, например, разработкой бизнес-приложений или банковских систем, разработчик должен понимать, как работают с этими системами, какие задачи они решают.
Бывает, что компания использует какие-то специфичные технологии при разработке, эти технологии также могут появиться в требованиях к кандидату.
Алексей Цымлов, Senior Software Developer, Hyperboloid
1. Главное, чтобы глаза горели. Если выбирать кандидатов по их знаниям, то нужно быть готовым уволить их, когда эти знания устареют, а устаревают они очень быстро. Если человеку интересно то, чем он занимается, он всегда будет в курсе последних технологий и стремиться к расширению своих знаний.
Говоря о стеке технологий Apple, очень важно понимать, что без знания английского никуда. Информации на русском языке в этой области очень мало, и, как правило, большая часть ее уже устарела. Технологии развиваются настолько быстро, что даже источники на английском языке появляются спустя несколько месяцев после презентации какой-либо новой фичи. Представьте, сколько времени пройдет, пока эта информация будет переведена на русский язык каким-нибудь энтузиастом, который нашел возможность в свободное от работы время это сделать. Книги публикуются в лучшем случае спустя год, а то и несколько лет. От знания английского языка зависит, насколько быстро ты окажешься в теме.
Конечно, базисом является знание языка программирования. У Apple с недавнего времени два языка, на которых ведется разработка, – Objective-C и Swift. Swift пришел на замену Objective-C и со временем займет его место полностью. Уже сейчас Apple активно переписывает свои фреймворки на Swift, и большинство примеров, которые можно встретить в интернете, приводятся на Swift. Поэтому для тех, кто только начинает, нет смысла вкладывать свое время в технологию, которая завтра окажется невостребованной, и лучше начать с изучения современного, уже ставшего популярным языка Swift.
В остальном необходимы, конечно, знание гайдлайнов, понимание MVC, навыки использования основных фреймворков Foundation, Cocoa, AppKit, CoreData, CoreAnimation, Quartz, умение работать со сторонними фреймворками, используя CocoaPods, и опыт подготовки приложения для публикации в App Store.
2. Основной инструмент – это среда разработки Xcode. Хотя ребята из JetBrains сделали классную IDE под названием AppCode, но ее использование затрудняется пока несколькими ограничениями. Со временем, я уверен, эти проблемы будут решены, и мы получим мощнейший инструмент, такой же как IntelliJ IDEA и ReSharper. По крайней мере я на это надеюсь и жду этого дня. Но пока основной средой остается Xcode.
В качестве системы контроля версий используется Git. Очень редко – Subversion.
Для трекинга задач нужно уметь работать с такими системами, как, например, Jira и Trello.
У нас в «Гиперболоиде» иногда бывает такое, что заказчик, для которого мы создаем приложение, настаивает на использовании своей трекинговой системы. Если заказчик с громким именем и платит хорошие деньги, отказать ему сложно. Поэтому разработчику приходится быть профессионалом и подстраиваться. В случае с крутыми заказчиками это даже приятно. Да и ничего сложного в этом нет.
3, 4. Ситуация такова, что рынок перегрет предложениями работодателей. Российских разработчиков активно «хантят» из-за рубежа. Сказывается и курсовая разница – иностранные компании, имеющие валютный оборот, могут предложить гораздо более существенную компенсацию. Помимо этого, они предлагают помощь в релокации, аренду жилья на первые несколько месяцев, выплачиваются подъемные. Это очень заманчиво.
Но в то же время требуют подтверждения, что ты действительно профессионал. Дипломы российских вузов, к сожалению, не рассматриваются как подтверждение квалификации. Поэтому нужно проходить техническое интервью и выполнять тестовые задания. Иногда такие интервью затягиваются на три – пять часов. Тестовые задания могут быть достаточно сложными и тоже рассчитаны на много часов. Если на тест уходит больше пяти часов, то принято оплачивать такую работу – правильные компании уважают кандидатов и их время.
5. Разумеется, особенно ценятся специалисты, способные разрабатывать для нескольких платформ – как для десктопов, так и для мобильных устройств.
Также учитывается то, насколько кандидат психологически вписывается в команду. Творческая и веселая атмосфера в компании очень важна. О способности к саморазвитию я уже упомянул. Нужно любить то, что делаешь, и делать то, что любишь.
Подготовил Игорь Штомпель