Как да наемете първия Android разработчик за вашия стартъп - Gaurav Navgire, експерт на AirCTO

Мобилната индустрия се променя с много бързи темпове. Потребителите прекарват по-голямата част от времето си за своите мобилни телефони, а с Android, претендирайки за 65% пазарен дял, е наложително компаниите / стартиращите компании да имат свои собствени приложения за Android, изброени в магазина за игра, да растат и на гигантите.

Основните предизвикателства, с които се сблъскват създателите / мениджърите по наемане на работа, докато наемат позиции за Android, решават какво да очаквате от следващия разработчик на Android и как да преценят дали той е подходящ за работата, както в техническо, така и в поведенческо отношение. Очакванията могат също да варират в зависимост от големината на компанията, технологичните пакети и т.н. и няма нещо като "едно правило, подходящо за всички".

И така, как избирате?

В AirCTO проведохме стотици интервюта за Android и видяхме стотици кандидати да бъдат отхвърлени, които от външния си вид изглеждаха като достойна перспектива, ако не и страхотна. За да решите въпроса, кого да наемете? Как да наемем? решихме да интервюираме нашия звезден експерт, Gaurav Navgire, който се консултира с нас повече от 1,5 години и направи много интервюта за различни компании, повечето от които доведоха до страхотни наемания.

В интервюто си Gaurav говори за това как трябва да изглежда профилът на идеален разработчик на Android, начините за интервю с него и валидиране на неговите проекти и червените знамена, които напълно да се избегнат.

Започнахте кариерата си като софтуерен инженер и след това преминахте към Android. Какво ви интересува най-много в тази технология?

Мобилността ми беше в съзнанието още откакто баща ми ми подари устройство Nokia, което имаше Symbian OS. Това, което ме заинтригува, беше, че приложенията, които ще работят на устройството, се захранват от JAVA. И тъй като вече изучавах Java по инженерство, годината беше 2007–2008 г., аз се закачих за това за нула време.

След инженерството реших да скоча по-дълбоко в JAVA и мобилност, което беше възможно само ако науча J2ME. Затова започнах да следвам курс по него, но тъй като късметът щеше да го има, Infosys ми даде дата за присъединяване (бях настанен в кампуса). Завърших курса си, бързайки да се присъединя към моята компания-мечта от онова време. Годината беше 2008. Беше същата година, когато Android беше представен в света.

В Infosys като по-свеж нямах друг избор освен да продължа в SAP BI през следващите 2 години и половина като софтуерен инженер. През това време Android започна да прави новини в Индия. Когато разбрах за това, взех свободата да го науча сам и тренирах усилено, за да бъда готов и работещ в индустрията за мобилност.

Това, което ми хареса в Android, беше, че можете да създавате мобилни приложения, използвайки CORE JAVA. Няма нужда да научавате J2ME и т.н. Освен това беше ОТВОРЕНИ ИЗТОЧНИК. Можете да създадете проста игра за сложни корпоративни приложения за създаване на потребителски ROM. За щастие, работих върху всички парадигми на Android Ecosystem. Така че за мен това беше златна мина на знанието и възможностите. Оттогава не съм поглеждал назад

Как трябва да изглежда портфолио от идеален Android Dev?

Идеалното портфолио на Android Dev е да работи върху някои от основните градивни елементи като Дейности, Фрагменти, Услуги и т.н., за да сложни функции като междупроцесови комуникации с помощта на AIDL.

Бих искал да видя портфолио, в което разработчикът е създал приложения, използвайки чисти Android API и не използва библиотеки на трети страни само с цел бързото решаване на задачата за програмиране. Ако той / тя наистина използва такива библиотеки като, да речем, Пикасо, тогава те трябва да могат да обяснят как действително задачата се справя програмно.

Правихте многобройни интервюта за AirCTO, какъв е процесът ви за проверка на кандидата?

Фокусирам се основно върху основите. И има стъпки за тестване на основите. Първо са концепциите за обектно ориентирано програмиране. На второ място е Core Java. И на последно място са архитектурата на Android и нейните градивни елементи. Когато кандидатът е приключил с основните положения, тогава само напредналите въпроси имат смисъл.

За мен те включват многопоточност, модели на проектиране и т.н. Между оценката, аз съм склонна да задавам няколко въпроса за псевдокодиране, ако това е телефонен разговор. Или пълноценни въпроси за програмиране, ако става въпрос за интервю лице в лице. Смятам, че е добре, ако кодът не е 100% пълен в определения срок. Важното е, че ако кандидатът е в състояние да обясни подробно кода.

Значение на моделите на дизайн и боравенето с нишки в разработката на Android?

Програмист не може да се нарече така, ако той / тя не знае какви са дизайнерските модели, структурите на данните и мулти резбата. JAVA е предназначен за многопоточна работа и Android се справя красиво с синхронна и асинхронна работа.

Очевидно трябва да се реализира по такъв начин, че да работи красиво, т.е. без изтичане на памет, консумация на време и т.н. Кандидатът трябва да знае как да борави с екземпляра на базата данни, използвайки някои от класическите дизайнерски модели. Той / Тя трябва да знае как да борави с асинхронни съобщения през нишки. Нищо не ме отблъсква, когато кандидат казва, че приложението за android по подразбиране работи в 2 нишки.

Значение на проектите? Как да ги валидирам?

Когато сканирам автобиография, акцентът ми е върху най-актуалния проект, над който кандидатът е работил / работи. Започвам интервюто с обяснението на кандидата за неговия настоящ / последен проект и ролята му в неговото разработване.

Ако екипът е голям, тогава за кои компоненти той / тя е отговорен, познава ли той приложението освен техните компоненти? Ако го разработиха с една ръка, тогава ми дава много място за валидиране на подробни подробности като модификации на таблицата на базата данни, алфа и бета версии на магазина за игра и т.н. Това ми дава ясна представа как да продължа интервюто напред.

Правихте много интервюта за стартиращи фирми, както и за по-големи компании. По какво се различава подходът във всеки отделен случай?

В по-големите компании ролята на работа е много ясна. Това е добре начертано очакване от тази конкретна роля. Значение, ако трябва да наема старши Android инженер за голяма компания, тогава се очаква той да бъде част от екип, който да достави част / няколко компонента на приложението.

При стартиране това не е така. Тук проверяваме дали кандидатът може да се представи като член на екипа, заедно с определянето на най-добри практики за връстници, прегледи на код, управление на репо репортаж и дори няколко задачи на DevOps.

Така че въпреки че етикетът на ролите може да бъде един и същ, но очакванията са различни при стартиране. Освен това същият разработчик ще трябва да бъде част от уеб API дизайн и дори разработка. Толкова за висша роля. Но дори и по-свежите се сблъскват с по-трудно време при стартиращите компании, отколкото големите компании.

Вашият любим въпрос за решаване на проблеми за тестване на познавателните умения на кандидата?

Един от любимите ми въпроси е относно постоянството на данните. Има различни начини, по които даден програмист може да играе с данни, които се съхраняват на устройството в базата данни, споделени предпочитания, файлове във вътрешна / външна памет. Склонен съм да ги питам традиционните начини за работа с постоянството.
Освен това им задавам въпроси около съвременната Android архитектура като Room и т.н. Това ми дава добра представа дали кандидатът има правилното отношение към постоянно променящия се пейзаж на мобилните технологии.

Вашето предложение за създателите на стартиращи фирми как да наемат първия си разработчик на Android?

Като основател имате много идеи. Искате някой, който може да реализира тези идеи. Искате решение на вашите проблеми и идеи тогава и там самите, или най-малкото имате възможността да намерите оптимално решение за нула време.

И това да не зависи от предположенията. Така че искате вашия първи разработчик на Android като този, който може да създаде скромно техническо решение за вас и да ви представи уверено. Тогава всичко, което трябва да направи разработчикът, е да предоставя решението постепенно и непрекъснато.

Един трик за основателите е да знаят някои технологични решения за някои стандартни проблеми. Например напъване на архитектурата за известия или трябва да разработите хибридно приложение или родно приложение, приложения в реално време или първи офлайн приложения? Познаването на тези решения сами ще ви помогне да прецените първия разработчик на Android.

И така, търсите ли да наемете страхотни разработчици на Android, които могат да добавят реална стойност към вашия екип? Определете график, за да поговорите с нашия експерт по наемане сега.