Разработчик Xamarin
Мы обратились к представителям компаний, чтобы выяснить, каких кандидатов они видят на этой позиции.
- Какими знаниями и навыками должен обладать разработчик Xamarin?
- Каков инструментарий разработчика Xamarin?
- Каковы требования компании к уровню образования потенциальных сотрудников?
- Какие требования предъявляются к опыту работы?
- Есть ли особые требования, которые обусловлены спецификой деятельности компании?
Владислав Сервитола, Xamarin Senior Developer, Spotware
1. Разработчик на Xamarin должен обладать фундаментальным знанием C#. Как бы странно это ни звучало. Ведь придется столкнуться с тем, как C# и .NET оборачивают Java из Android и Objective-C из iOS. И это будто один огромный мир оборачивает другой мир.
Кроме этого, он должен быть готов к следующему: комфортной разработки под Xamarin еще не появилось.
Обычное дело такой разговор:
– Не запускается проект на эмуляторе.
– А ты почистил bin/obj, кэш visual studio, кэш resharper, кэш xamarin на Mac нашим суперскриптом?
– О, помогло.
Я знаю людей, которых это и другая магия выводили из себя. Так что крепкие нервы очень не помешают.
Также я бы хотел видеть хорошее знание платформ Android и iOS. И я даже не имею в виду какие-то книжные знания. На этих платформах очень большая вариативность приемов работы с приложениями. К примеру, приложение может быть открыто по deep link или закрыто системой автоматически, а потом автоматически открыто обратно. Может не хватать и памяти, и экрана, и всего-всего. И Xamarin тут добавляет в этот блок свою магию. Поэтому хорошо бы, чтобы человек в достаточной мере представлял, как люди используют свои телефоны.
2. Тут вряд ли можно сильно ошибиться. Пользуюсь каждый день:
- Visual Studio, Android Studio (верстка Android, профайлинг памяти),
- Xсode (верстка iOS),
- Synergy (расшарить одну пару клавиатура-мышь между Windows и Mac-устройствами),
- стандартные эмуляторы девайсов,
- GitExtensions для Git (тут на любителя абсолютно).
Можно добавить в список еще несколько программ и утилит, которыми пользуюсь иногда, но точно приходится Fiddler (тесты сетевого взаимодействия), adb (взаимодействие с Android-девайсами), mprof-report (пригодится при профайлинге памяти Android).
Есть люди, которым повезло заменить Visual Studio на Rider для Xamarin-разработки, но у меня так и не получилось, чтобы просто работало без постоянных проблем обычного запуска.
3. Если понимать под уровнем образования корочки какого-нибудь вуза, то этот момент в целом не так уж и влияет. Меня при проведении собеседования интересует способность подать свои мысли, кругозор, умение дойти до какого-то решения своим умом, даже если этого знания не было. Не просто сказать: я не знаю, давайте дальше. Под кругозором я, например, понимаю то, что на вопросах я пойму, что у человека есть математический бэкграунд и он не просто скажет: «Уу, ну тут будет долго исполняться, а тут быстро».
4. Нам прежде всего интересны люди с опытом большого проекта. По факту очень сложно найти такого Xamarin-разработчика. Поэтому мы в процессе поиска всегда интересуемся людьми просто с большим опытом в C#/.NET в целом.
5. Из требований могу припомнить только отсутствие судимости. Она необходима, чтобы оформить документы о статусе экспата. Причина в том, что наш офис находится на Кипре и приходится сюда переезжать. Специфика работы: финансовые инструменты. В моей компании считается, что распылять такую разработку на удаленных рабочих не продуктивно.
Денис Федяев, Xamarin-разработчик
1. Роль Xamarin-разработчика в конкретном проекте всегда имеет конкретную цель, определяющую требования к его знаниям и навыкам.
Хотя основная разработка ведется на языке C#, владение языками Java и Objective-C приветствуется. При создании приложений для мобильных платформ необходимо знать Android/iOS SDK. Некоторые простые приложения могут быть построены на базе Xamarin.Forms, что требует от разработчика дополнительных навыков.
Для успешной работы в команде будет плюсом владение инструментами Jira, Git, CI (Continuous Integration), а также понимание сути Agile-разработки.
2. Для запуска iOS-приложений не обойтись без Mac OS с установленным Xcode. Основная разработка ведется в Visual Studio for Mac. Для верстки Android-разметок я использую Android Studio. При работе с UI могут понадобиться Sketch и Zeplin.
3. Подавляющее большинство компаний, с которыми я работал, имели единственное, причем не обязательное требование – наличие степени бакалавра в инженерной сфере.
4. Начальное требование – это год-два опыта написания кода на любом объектно-ориентированном языке. Цель разработки не имеет значения: выполнение курсовых работ, разработка дипломного проекта или создание проектов на образовательных онлайн-платформах.
Требования к опыту разработчика для выполнения сложных задач могут, например, включать: опыт разработки мобильных приложений не менее пяти лет; опыт разработки приложений для банковской сферы, мобильных решений для EHR (Electronic Health Record) или других узких специализаций; «исторический» опыт не менее пяти лет для определения затрат времени на выполнение заданий; другие конкретные требования.
Для каждого Xamarin-разработчика большим плюсом будет один-два года опыта «нативной» разработки для Android и iOS.
5. Необходимо иметь в распоряжении физические устройства, поскольку эмуляторы не всегда подходят для отладки и тестирования мобильных приложений.
Роман Богун, Lead Software Engineer в компании Altexsoft
1. Разработчику необходимо быть экспертом не только в самой платформе Xamarin, но и хорошо знать платформу, с которой он работает, Android или iOS (или же обе).
Что касается технических знаний, я выделяю следующие:
- уверенные знания C#, OOP, OOD, XAML, LINQ;
- знание самой платформы Xamarin (Xamarin Native, Xamarin.Forms);
- знание API для iOS и Android;
- уметь создавать пользовательский интерфейс для iOS (Storyboard, XIB), Android (XML), Xamarin.Forms (XAML);
- принципы SOLID, KISS;
- архитектурные паттерны MVC, MVP, MVVM, a также GoF (Gang of Fours) паттерны;
- архитектура REST, JSON;
- базовые знания по БД и SQL, такие как нормальные формы, связи и отношения таблиц, а также элементарные операции с данными SELECT, DELETE, UPDATE, INSERT.
Так как Xamarin – это кроссплатформенная разработка, то необходимо знать особенности SDK каждой платформы (iOS и Android), а также знать рекомендации по созданию UI для каждой из платформ. Кроме того, разработчикам для Android необходимо изучить язык Java/Kotlin, по крайней мере на базовом уровне, а для iOS это будут Objectve-C или Swift.
Все дело в том, что все примеры кода в нативной документации (не относится к документации по Xamarin) выполнены на этих языках. То же самое касается и других полезных ресурсов, например, таких как StackOverflow. То есть чтобы понимать, что делает код.
Будет плюсом знание plugins, frameworks, libraries:
- Mvvmcross;
- TinyIoc, Ninject, Autofac;
- SQLite, Realm;
- Xamarin.Essentials.
2. Основным инструментарием Xamarin-разработчика является Visual Studio. Разработка приложений под Android и iOS может выполняться как в Visual Studio for Windows, так и в Visual Studio for Mac. Но в случае с iOS наличие устройства с Мас OS обязательно (Mac mini, Macbook, iMac). В целом для Xamarin-разработчика инструментарий выглядит так:
- Visual Studio, Xcode, Android Studio;
- Xamarin Profiler, Instruments (утилита для диагностики проблем в приложении, например, связанных с производительностью);
- iOS Simulators (доступны после установки Xcode);
- Android Emulators, поставляемые с Visual Studio, Genymotion (отличные эмуляторы);
- Visual Studio App Center, Team City, iTunes Connect, TestFlight;
- Git, SourceTree/Sublime merge.
3. Требований к уровню технического образования нет, по крайней мере к мобильным разработчикам, потому что опыт намного важнее. Есть очень толковые ребята, которые пришли в ИТ из других профессий, совершенно не связанных с техническими, и показывают очень хороший уровень. Но наличие сертификатов по необходимым технологиям будет плюсом потенциальному кандидату.
Но не стоит относиться к этому так, что если компании не требуют наличия высшего образования, то можно и не учиться. У большинства западных компаний наличие высшего образования у кандидата является обязательным пунктом.
Вы можете подумать, а как это связано с нашими ИТ-компаниями. Очень просто! Иногда клиенты сами решают, кто будет работать над проектом. Для этого они запрашивают у компании резюме потенциальных кандидатов на проект и проводят собеседования. И может получиться так, что вы не пройдете отбор и окажетесь за бортом.
4. Все зависит от того, на какую позицию претендует кандидат, если это Junior, то это может быть от 0 до 1 года.
А вот для Senior эта цифра будет 4+ лет опыта коммерческой разработки. Конечно же, не всегда решает количество отработанных лет, а знания, которые кандидат демонстрирует на техническом собеседовании и как их применяет на деле в период испытательного срока и в дальнейшем, уже работая в компании.
5. Как таковых специфических требований нет, в основном требования диктуют проекты. И если идет набор команды под конкретный проект, то и поиск кандидатов будет основан на технических требованиях проекта.
Что касается личных качеств, или soft skills, то я бы выделил такие, как коммуникация, ориентация на клиента, готовность обучаться и обучать.
Также хочу отнести к требованиям знание английского языка, т.к. вся коммуникация с клиентами и внутри компании ведется на английском языке.
Подготовил Игорь Штомпель