Je m'appelle Vladimir. Je suis en charge du développement mobile chez Vivid Money.
Vivid Money est une start-up fintech pour le marché européen avec un large éventail de fonctionnalités - paiements et transferts, multi-devises, analyse financière, partage de compte, investissements et bien plus encore. Les concurrents les plus proches sont Revolut et N26.
Nous avons réussi à créer et à lancer avec succès une application mobile fintech en un an. Au cours de cette année, j'ai rassemblé des idées qui se formaient dans ma tête pendant environ 4 ans, alors que j'étais responsable d'autres projets. Dans cet article, ces idées sont rassemblées sous la forme de conseils pour les responsables / responsables en génie logiciel qui démarrent des projets à long terme et à grande échelle à partir de zéro.
introduction
Il y a un peu plus d'un an, je suis arrivé sur le projet en tant que responsable d'une équipe Android. J'étais confronté à une tâche ambitieuse et intéressante: choisir les technologies, constituer une équipe, mettre en place des processus et, surtout, bien faire tout cela. Le bien est un concept vague, mais pour moi c'est un produit de qualité d'un point de vue produit et technique.
Démarrer un projet à partir de zéro est une tâche aussi intéressante et passionnante qu'incompréhensible et difficile. Au début, vous ne savez pas à quoi vous accrocher, puis il y a tellement de choses à faire que tout le processus de travail est comme éteindre les incendies.
Pour éviter que cela ne se produise, il faut tout d'abord définir clairement les priorités des activités.
À mon avis, les principales activités d'un lead peuvent être organisées dans l'ordre suivant:
- Construire le processus d'embauche;
- Sélection d'une pile technologique;
- Mettre en place une interaction d'équipe;
- Construire un processus de développement et de test.
Dans cette partie de l'article, je me concentrerai uniquement sur le premier point.
Avertissement:
Cet article contient mes réflexions et conclusions basées sur mon expérience de travail dans des projets de grande envergure et à long terme. Certains de ces conseils peuvent sembler ratés, mais comme la pratique l'a montré, tous ne sont pas appliqués, même dans les grandes entreprises et les projets.
Location bâtiment
Pour moi, ce point est en premier lieu, puisque le travail ultérieur de l'équipe dépend de la «qualité» des personnes.
Nous avions un calendrier très ambitieux pour lancer la banque - 1 an. Pendant ce temps, il était nécessaire de faire qualitativement une énorme quantité de fonctionnalités. Il n'y avait tout simplement pas de temps pour les employés dépendants et mal formés. D'où les conseils suivants:
Conseil numéro 1. Rappelez-vous l'importance de l'embauche
Outre le fait qu'un développeur faible affecte directement la qualité du code et le nombre de bugs dans le produit, il est impossible de lui déléguer, car il n'y aura pas de confiance totale et une surveillance constante sera nécessaire. Par conséquent, des difficultés surgiront dans un projet à croissance rapide.
Conseil numéro 2. Vérifiez non seulement les compétences techniques lors de l'entretien, mais également les compétences générales
Souvent, un entretien avec un développeur en Russie se résume à des questions de langue / cadre. En fait, les compétences générales jouent un rôle tout aussi important et sont plus difficiles à développer. De plus, une personne ayant un état d'esprit similaire est plus susceptible de s'intégrer dans l'équipe.
Pour nous-mêmes, nous avons identifié les compétences générales suivantes:
- Pensée systématique;
- Propreté et perfectionnisme sain;
- S'appuyer sur l'expérience, pas sur des conseils; remettre en question des faits non vérifiés.
Et, bien sûr, le non-conflit de base et la capacité de communiquer avec les gens.
Par exemple, nous posons une question à un candidat: «Pourquoi quittez-vous votre ancien emploi et quels sont vos critères pour choisir un nouvel emploi?». La réponse elle-même n'est pas si importante que l'approche systématique est importante - nous attendons du candidat qu'il sache qu'il n'est pas satisfait, qu'il a pu y arriver de manière logique et tout mettre sur les étagères dans sa tête.
Des exemples de questions similaires qui nous aident à comprendre l'état d'esprit et les principes d'un candidat pourraient être: "À quoi ressemble votre équipe idéale?" ou "À quoi ressemble le processus de développement idéal?"
Conseil numéro 3. Optimisez votre entretien
L'entretien doit être considéré comme un mécanisme qui peut être amélioré et optimisé. Ou comme un programme qui peut être remanié.
Je vais donner des exemples des optimisations que nous avons faites.
Exemple 1
Il faut environ 1,5 heure à deux développeurs pour interviewer chaque candidat. Pour optimiser ce temps et ne pas le gaspiller sur des candidats manifestement faibles, nous avons introduit le dépistage. Le dépistage est constitué de quelques questions simples et fermées qui ont préparé des réponses. Les recruteurs posent eux-mêmes ces questions au candidat, ce qui prend environ 10 à 15 minutes.
Quelques chiffres:
Sur 100 candidats après présélection, environ un tiers, soit environ 30. Un recruteur consacre environ 15 minutes à chaque présélection, soit environ 8 heures de temps net pour 30 candidats éliminés. Dans un entretien classique pour les mêmes 30 candidats, nous aurions passé environ 60 heures-homme dans le scénario le plus optimiste.
Exemple 2
Le but de l'entretien est de sélectionner le candidat le plus pertinent. Nous avons analysé et identifié les compétences techniques et les compétences essentielles du projet, en tenant compte de la pile de technologies sélectionnées, ce qui nous a permis de supprimer certaines des questions non pertinentes et de réduire le temps d'entretien.
Par exemple, nous avons supprimé les questions liées aux parties du SDK Android qui ne sont pas utilisées dans notre projet - ContentProvider, JobScheduler, etc. Les SDK sont rarement utilisés.
Exemple 3
Au départ, l'entretien technique s'est déroulé en deux étapes distinctes - questions théoriques et tâches pratiques. Cela a considérablement augmenté le temps nécessaire à un candidat pour terminer toutes les étapes de l'entrevue, et beaucoup de candidats ont été perdus, car le marché informatique est très compétitif - les bons développeurs reçoivent rapidement des offres.
Pour optimiser l'entonnoir, nous avons réduit l'interview à l'étape 1 - suppression des questions non informatives et résolution de problèmes algorithmiques. J'ai écrit sur les questions non informatives dans le paragraphe précédent. Mais nous avons remplacé les tâches algorithmiques par des tâches pratiques pour le framework. Ils testent également vos compétences en codage et vos connaissances du SDK.
En conséquence, il n'y a eu qu'un seul entretien technique d'une heure et demie, mais le contenu est devenu aussi raffiné que possible.
Conseil numéro 4. "La compréhension est plus importante que la connaissance"
Le critère le plus important pour choisir un développeur était la «compréhension». Pour qu'une personne ne sache pas seulement comment donner des définitions et des connaissances académiques, mais démontre une compréhension de la structure d'un cadre particulier. Un développeur sans cette compréhension, confronté à des problèmes, ne pourra pas trouver de solution par lui-même ou ne résoudra pas le problème de manière suffisamment optimale. Par conséquent, nous avons ouvert toutes les questions d'entrevue afin que le candidat ne donne pas les termes appris, mais raisonne sur un sujet ou un autre. Et nous suivons sa connaissance du sujet et le cours de sa logique.
Par exemple, nous posons une question ouverte: «Comment créer un détecteur ANR (Application Not Responding) sous Android?». Cette question teste la connaissance du fonctionnement des threads sous Android, mais évite la question directe sur Looper et Handler. Il vous permet également de passer de manière concise à un sujet avec le multithreading.
Conseil numéro 5. Distribuer la fonction des entretiens
Avec la croissance rapide de l'équipe, les entretiens deviennent tellement nombreux que cela prend toute la journée, et il ne reste plus de temps pour d'autres activités. Par conséquent, il est utile de déléguer partiellement la fonction d'entretien à l'équipe.
Cela allège non seulement le fardeau de la tête, mais inclut également le développeur dans le choix de son collègue potentiel, ce qui le motive également.
De plus, le candidat apprend à connaître l'équipe et se crée une expérience plus holistique.
Conseil numéro 6. Équilibrez l'équipe
Lors de l'embauche, vous devez toujours vous souvenir de l'équilibre des personnes en termes de compétences dans l'équipe. Trop de développeurs seniors peuvent les amener à proposer de nouvelles solutions, mais les développeurs ne créeront pas de fonctionnalités. Mais au début du projet, lorsque la base technique est posée pour les années à venir, c'est nécessaire. De plus, pour écrire le code habituel des fonctionnalités, le signataire sera déraisonnablement cher. Trop de juniors, à leur tour, dégraderont la base de code et, par conséquent, couleront le projet à long terme. Cependant, les juniors intelligents deviennent rapidement des intermédiaires et deviennent beaucoup plus fidèles à l'entreprise et à l'équipe que les intermédiaires du marché. À mon avis, cet équilibre est différent pour chaque projet et chaque situation spécifique, je ne donnerai donc pas de pourcentages précis.
Souvent, les équipes sont diluées avec des sous-traitants pour accélérer le développement. L'équilibre est également très important ici, car un grand nombre d'entrepreneurs peuvent également dégrader le code dans le projet. Les entrepreneurs ont rarement la même motivation et l'intérêt pour un projet qu'un employé à temps plein.
Conseil numéro 7. N'aie pas peur de tirer
Enfin, il n'y a pas lieu d'avoir peur de renvoyer des membres de l'équipe. Une personne qui ne correspond pas à l'équipe en termes de principes et d'esprit ou de compétences techniques fera beaucoup plus de mal à long terme que les avantages d'un codage à court terme.
Cela semble facile à licencier, mais comment le faire le plus facilement possible pour l'employé et l'équipe? Le principe fonctionne ici: "Peu importe ce que vous faites, mais il est important de savoir comment ". Si vous faites tout à l'avance - discutez des attentes du poste, donnez des commentaires sur le travail à temps, sans attendre la fin de la période d'essai et donnez les raisons de vos commentaires - cela ne surprendra pas l'employé.
Il est également important de faire comprendre publiquement à l'équipe pourquoil'employé a été congédié. Sinon, vous pouvez instiller la peur dans l'équipe et gâcher l'atmosphère de l'équipe.
Conseil numéro 8. Recueillir les commentaires des employés nouvellement arrivés
Le processus de recrutement se compose de 2 étapes - entretien et intégration des débutants.
L'intégration devrait être utile non seulement pour le débutant, mais aussi pour le projet.
Après une immersion dans le projet, les nouvelles personnes peuvent voir les zones à problèmes avec un regard ouvert et donner de nouvelles idées. Par conséquent, nous avons développé une règle - pour écouter et analyser consciemment leurs opinions et recommandations pour améliorer les approches et la base de code. Certaines de ces recommandations ont été mises en œuvre avec succès dans le projet.
Par exemple, après l'arrivée de l'un des membres de l'équipe Android, nous avons complètement revu l'approche de stockage des données dans le cache en mémoire.
Résultat
En conclusion, je voudrais dire que notre équipe mobile est passée à 26 personnes en près d'un an et demi. Tous les développeurs font du bon travail et personne n'a quitté l'équipe de son propre chef. Nous avons lancé avec succès le produit et passé le test du travail à distance sans perte de qualité et de vitesse de développement.
J'espère que les conseils recueillis dans cet article vous seront également utiles.
Dans les prochaines parties, je parlerai de nos approches pour choisir une pile technologique et mettre en place une interaction d'équipe.