Comment embaucher le premier développeur Android pour votre startup - Gaurav Navgire, expert AirCTO

L'industrie de la téléphonie mobile évolue à un rythme très rapide. Les utilisateurs passent la majorité de leur temps sur leurs téléphones mobiles et avec Android, qui revendique une part de marché de 65%, il est impératif que les entreprises / startups aient leurs propres applications Android répertoriées dans le magasin de jeu, ce qui fait grandir les géants.

Le principal défi que doivent se poser les fondateurs et les responsables du recrutement lors de l’embauche pour des postes sur Android consiste à décider de ce à quoi s’attendre du prochain développeur Android et à déterminer s’il est apte à occuper ce poste, tant sur le plan technique que comportemental. Les attentes peuvent également varier en fonction de la taille de l'entreprise, des piles de technologies, etc. Il n'y a rien de tel que le type de solution «une règle pour tous».

Alors, comment choisissez-vous?

Chez AirCTO, nous avons mené des centaines d'interviews sur Android et nous avons vu des centaines de candidats se faire rejeter, ce qui, à en juger par leur curriculum vitae, semblait être une perspective décente, voire géniale. Pour résoudre la question, qui embaucher? Comment embaucher? nous avons décidé d'interviewer notre expert vedette, Gaurav Navgire, qui nous consultait depuis plus d'un an et demi et a réalisé de nombreuses interviews pour différentes entreprises, la plupart d'entre elles ayant abouti à de formidables recrutements.

Dans son interview, Gaurav explique à quoi devrait ressembler le profil d'un développeur Android idéal, les moyens de l'interviewer et de valider ses projets, ainsi que les signaux d'alarme à éviter complètement.

Vous avez commencé votre carrière en tant qu’ingénieur logiciel puis vous êtes passé à Android. Qu'est-ce qui vous a le plus intéressé dans cette technologie?

Je pensais à la mobilité depuis que mon père m'a offert un appareil Nokia doté du système d'exploitation Symbian. Ce qui m'a intrigué, c'est que les applications qui s'exécuteraient sur l'appareil étaient alimentées par JAVA. Et comme j’étudiais déjà Java en ingénierie, l’exercice 2007-2008, j’y suis devenu accro en un rien de temps.

Après l’ingénierie, j’ai décidé d’approfondir mes connaissances de JAVA et de Mobility, ce qui n’était possible que si j’apprenais J2ME. J'ai donc commencé à suivre un cours sur ce sujet mais, par chance, Infosys m'a donné une date d'adhésion (j'ai été placé sur le campus). J'ai terminé mon cours en hâte pour rejoindre l'entreprise de mes rêves de cette époque. L'année était 2008. C'était la même année où Android a été introduit dans le monde.

Dans Infosys, pour me rafraîchir, je n'avais pas d'autre choix que de continuer dans SAP BI pour les deux prochaines années et demi en tant qu'ingénieur logiciel. Pendant ce temps, Android a commencé à faire des nouvelles en Inde. Quand j’en ai eu connaissance, j’ai pris la liberté de l’apprendre par moi-même et je me suis entraîné durement pour être prêt et apte au travail dans le secteur de la mobilité.

Ce qui me plaisait dans Android, c’est que vous pouvez créer des applications mobiles en utilisant CORE JAVA. Pas besoin d'apprendre J2ME etc. En outre, c'était OPEN SOURCE. Vous pouvez créer un jeu simple pour les applications d'entreprise complexes afin de créer une ROM personnalisée. Heureusement, j'ai travaillé sur tous les paradigmes d'Android Ecosystem. Donc, pour moi, c'était une mine d'or de connaissances et d'opportunités. Je n’ai pas regardé en arrière depuis.

À quoi devrait ressembler un portefeuille d'un développeur Android idéal?

Un portefeuille idéal de développeurs Android consiste à avoir travaillé sur certains éléments de base, tels que Activités, Fragments, Services, etc., ainsi que sur des fonctionnalités complexes telles que les communications inter-processus utilisant AIDL.

J'aimerais voir un portefeuille dans lequel le développeur a créé des applications utilisant des API Android pur et non des bibliothèques tierces uniquement pour résoudre rapidement une tâche de programmation. S'il utilise des bibliothèques telles que Picasso, par exemple, il doit être en mesure d'expliquer comment la tâche est gérée par programme.

Vous avez effectué de nombreux entretiens pour AirCTO, quelle est votre procédure pour contrôler le candidat?

Je me concentre principalement sur les bases. Et il y a des étapes pour tester les bases. Premièrement, les concepts de programmation orientés objet. Deuxième est le noyau Java. Et enfin, l'architecture Android et ses blocs de construction. Lorsque le candidat a terminé avec les bases, seules les questions avancées ont un sens.

Pour moi, cela inclut le multithreading, les schémas de conception, etc. Entre les évaluations, j’ai tendance à poser quelques questions de pseudocodage s’il s’agit d’un appel téléphonique. Ou une programmation à part entière qui pose des questions s’il s’agit d’une interview face à face. Je trouve que ça va si le code n'est pas complet à 100% dans les délais impartis. Ce qui compte, c’est que si le candidat est capable d’expliquer le code de manière approfondie.

Importance des modèles de conception et de la gestion des threads dans le développement Android?

Un programmeur ne peut pas s'appeler lui-même, donc s'il ne sait pas quels sont les modèles de conception, les structures de données et le multi-threading. JAVA est conçu pour le multithreading et Android gère parfaitement le travail synchrone et asynchrone.

De toute évidence, il doit être implémenté de manière à fonctionner parfaitement, c'est-à-dire sans fuites de mémoire, consommation de temps, etc. Le candidat doit savoir comment gérer une instance de base de données à l'aide de certains modèles de conception classiques. Il / Elle doit savoir comment gérer les messages asynchrones sur les threads. Rien ne me dissuade lorsqu'un candidat déclare qu'une application Android s'exécute par défaut dans 2 threads.

Importance des projets? Comment les valider?

Lorsque je numérise un CV, je me concentre sur le projet le plus récent sur lequel le candidat a travaillé / travaille. Je commence l’entretien avec l’explication du candidat sur son dernier projet / actuel et son rôle dans son développement.

Si l’équipe est grande, quels sont les composants dont il / elle était responsable, connaît-il l’application en dehors de leurs propres composants? S'ils le développaient tout seul, cela me laisse beaucoup de place pour valider des détails infimes, tels que des modifications de tables de bases de données, des librairies de jeux alpha et bêta, etc.

Vous avez réalisé de nombreuses interviews pour des start-ups et des grandes entreprises. Comment l'approche diffère-t-elle dans chaque cas?

Dans les grandes entreprises, le rôle du poste est très clair. C'est une attente bien définie de ce rôle particulier. Autrement dit, si je dois embaucher un ingénieur Android senior pour une grande entreprise, il devrait faire partie d'une équipe chargée de fournir une partie / quelques composants de l'application.

Dans une startup, ce n'est pas le cas. Ici, nous vérifions si le candidat peut s’acquitter en tant que membre de l’équipe en définissant les meilleures pratiques pour les pairs, les révisions de code, la gestion du référentiel source et même quelques tâches DevOps.

Ainsi, même si le libellé du rôle peut être identique, mais les attentes sont différentes dans une startup. De plus, le même développeur devra faire partie de la conception et même du développement des API Web. Voilà pour un rôle principal. Mais même les débutants rencontrent des difficultés au démarrage que les grandes entreprises.

Votre question de résolution de problème préférée pour tester les compétences cognitives du candidat?

Une de mes questions préférées concerne la persistance des données. Il existe différentes manières pour un développeur de jouer avec les données stockées sur le périphérique dans la base de données, les préférences partagées, les fichiers stockés sur le stockage interne / externe. J'ai tendance à leur demander des méthodes traditionnelles de gestion de la persistance.
De plus, je leur pose des questions sur l'architecture Android moderne, telle que Room, etc. Cela me donne une bonne idée si le candidat a la bonne attitude face au paysage en constante évolution des technologies mobiles.

Votre suggestion aux fondateurs de startups sur la façon d'embaucher leur premier développeur Android?

En tant que fondateur, vous avez beaucoup d'idées. Vous voulez quelqu'un qui peut concrétiser ces idées. Vous voulez alors une solution à vos problèmes et à vos idées, ou du moins avez la capacité de trouver une solution optimale en un rien de temps.

Et cela ne dépend pas de devinettes. Vous voulez donc que votre premier développeur Android soit celui qui peut concevoir une solution technique modeste pour vous et vous le présenter en toute confiance. Ensuite, tout ce que le développeur doit faire est de livrer la solution de manière incrémentielle et continue.

Une astuce pour les fondateurs consiste à connaître des solutions techniques à certains problèmes standard. Par exemple, l'architecture de notification push, ou devez-vous développer une application hybride ou native, des applications en temps réel ou des premières applications hors ligne? Connaître ces solutions vous-même vous aidera à évaluer le premier développeur Android.

Alors, cherchez-vous à engager des développeurs Android géniaux qui peuvent apporter une réelle valeur ajoutée à votre équipe? Fixez un horaire pour parler à notre expert en recrutement maintenant.