Article original : What I've Learned On My Journey As A Self-Taught Mobile Developer

Par Dragos Ivanov

Dans cet article, je vais partager mon parcours complet sur la manière dont je suis devenu un développeur mobile professionnel.

J'espère que la lecture de mon expérience vous aidera à réfléchir sur votre présent et votre futur, et vous aidera soit à commencer votre carrière en tant que développeur, soit à vous motiver pour avancer dans la réalisation de vos objectifs.

Mon diplôme universitaire et comment tout a commencé

J'ai terminé le lycée avec un diplôme en mathématiques-informatique dans une petite ville de Roumanie.

Comme la plupart de mes amis, vous aviez deux choix en termes de villes pour aller à l'université. J'ai choisi Bucarest, la capitale de la Roumanie.

J'ai grandi en pensant que l'université était une chose obligatoire. Cela se produit probablement dans la plupart des pays.

Tous nos parents le veulent pour nous.

Je n'ai jamais ressenti le désir de choisir un diplôme spécifique. Ça vous dit quelque chose ? Je ne me suis jamais vu travailler dans un domaine particulier après avoir obtenu mon diplôme.

Finalement, j'ai choisi d'aller dans une université d'économie à Bucarest. Là encore, il y avait deux options. L'une était considérée comme une bonne université, et une autre où vous deviez payer beaucoup d'argent juste pour obtenir un diplôme.

J'ai passé quelques examens dans la première, sans étudier, pour être honnête. Et évidemment, je n'ai pas réussi.

J'ai dû opter pour la deuxième option.

En accéléré, j'ai obtenu mon diplôme de mon université d'économie. Mais j'ai obtenu mon diplôme deux ans plus tard. Je n'ai jamais eu de passion pour l'économie et je ne me suis jamais vu travailler comme banquier. J'ai toujours pensé que je voulais obtenir le diplôme, et c'est tout.

Je n'ai jamais considéré combien j'ai payé pour ce diplôme inutile, mais j'avais besoin d'un diplôme pour être accepté par la société, n'est-ce pas ?

J'étais un échec, avec un diplôme en économie, mais sans expérience ni connaissance. Dans les années qui ont suivi, avec l'aide de ma famille, j'ai réussi à créer deux entreprises qui ont également échoué.

Je ne vais pas discuter de celles-ci dans cette histoire, mais disons simplement que j'ai beaucoup appris. J'ai également joué au poker en ligne, et j'étais plutôt bon.

Sept ans après avoir obtenu mon diplôme de lycée, je me suis retrouvé sans expérience professionnelle, sans entreprise prospère et sans argent.

Je savais que je devais agir, et je savais que tous mes rêves d'avoir une entreprise prospère ne se réaliseraient pas bientôt à moins d'avoir un plan de secours.

C'est alors que j'ai pensé :

Quel travail puis-je obtenir qui me rendra heureux, me paiera bien et me permettra d'avoir une bonne vie à 30 - 40 ans, même si je n'arrive jamais à créer ma propre entreprise ?

La seule réponse qui me venait à l'esprit était la programmation. J'avais quelques expériences préalables au lycée et j'avais construit quelques sites web.

Il n'y avait qu'un seul problème – je n'aimais pas les mathématiques au lycée, et je pensais toujours que je ne serais pas capable d'apprendre la programmation professionnelle sans une excellente compréhension de celle-ci.

J'avais tort.

Il y a probablement beaucoup de gens comme moi, des gens qui ont les mêmes pensées et les mêmes doutes. Mais tout ce que vous avez à faire, c'est agir et commencer à apprendre.

Apprendre Android et Java

C'était en 2014 lorsque j'ai commencé à m'intéresser à l'idée d'apprendre à coder.

La première chose que j'ai faite a été de chercher sur Google des cours à Bucarest, et j'ai trouvé une entreprise qui m'a invité dans leurs bureaux. Je suis allé là-bas, et je me souviens qu'ils avaient un bureau magnifiquement meublé avec beaucoup d'iMAC. Je me suis dit : "C'est ce dont j'ai besoin."

Dix minutes plus tard, j'ai découvert qu'ils faisaient tous leurs cours en ligne et que c'était plus un bureau pour vendre le cours que pour le dispenser.

Je ne me souviens pas du prix exact, mais c'était autour de 1500 - 2000 USD. Je ne l'ai pas pris.

J'ai abandonné l'idée pendant quelques mois, puis 2015 est arrivé. Nouvelle année, nouveaux plans, nouvelle vie, vous savez ?

J'ai commencé à chercher un cours en personne à nouveau, et j'ai découvert qu'ils s'appelaient des bootcamps.

J'en ai trouvé un à Bucarest et ils enseignaient Java, et cela ne coûtait que 800 USD pour quatre mois. Ce serait quelques heures par jour avec un enseignant et d'autres étudiants.

En regardant en arrière, je pense qu'ils étaient bon marché pour ce qu'ils offraient, mais je pense que nous étions le deuxième groupe qu'ils avaient.

Ils nous disaient toutes sortes de choses sur le fait d'être embauché après le bootcamp, mais je ne m'en souciais pas.

Je voulais apprendre à coder, et je pensais que je pourrais trouver un travail rapidement après seulement quelques mois. J'avais raison, mais ce n'était pas aussi facile que je le pensais.

Les cours ont commencé. Ils nous disaient toujours qu'il n'était pas suffisant de faire seulement les leçons pendant nos heures ensemble.

J'ai essayé d'écouter. Mais à la maison, les choses n'avaient jamais de sens. La programmation était difficile, et je pensais souvent que je ne pourrais pas terminer le bootcamp.

Je me suis poussé de plus en plus fort. C'était un mois après le début des cours lorsque j'ai découvert que nous allions apprendre Java avec Android, mais encore une fois, je ne m'en souciais pas. Je tombais amoureux d'Eclipse et les choses se passaient à l'écran alors que nous codions.

Eclipse est un environnement de développement intégré qui était initialement utilisé pour développer pour Android. Maintenant, nous utilisons Android Studio.

C'était difficile. Leçon après leçon, j'essayais d'apprendre les variables, les classes, l'héritage, l'encapsulation, les boucles for, et ainsi de suite.

Mais j'ai eu du mal. Je n'avais pas une image claire de la manière dont je pouvais utiliser tout cela dans une application plus grande. Cela n'avait souvent pas de sens.

Si vous venez de commencer la programmation et que vous ressentez la même chose, je veux que vous sachiez que c'est normal.

Nos mentors nous disaient toujours : "Vous n'avez pas besoin de connaître tout cela par cœur. Essayez simplement de comprendre ce qu'ils sont et comment vous pouvez les utiliser."

Ils avaient raison, mais je l'ai découvert plus tard. À ce moment précis, cela ne m'a pas aidé.

Une chose que je regrette, c'est de ne pas avoir fait de projets dès le début. J'ai toujours pensé que j'avais besoin d'un enseignant et que vous ne pouvez rien apprendre en ligne par vous-même. J'étais paresseux et encore une fois, j'avais tort.

Après quatre mois, j'ai réussi à créer ma première application "non fonctionnelle". C'était une application où les étudiants pouvaient louer des chambres à d'autres étudiants ou à des personnes.

J'ai dit "non fonctionnelle" parce qu'elle n'avait aucun backend ni aucun utilisateur. C'était plus comme une application de démonstration qui utilisait SQLite pour stocker des données.

J'en étais fier, car quelques mois auparavant, je n'aurais jamais imaginé pouvoir le faire.

Le bootcamp s'est terminé, et je ne pense pas avoir jamais reparlé à quelqu'un de leur direction.

Je ne suis pas sûr s'ils ont essayé de me trouver un emploi, ou peut-être qu'ils pensaient que je n'étais pas assez bon pour une carrière de développeur.

Premières entretiens et premier emploi en tant que développeur Android junior

J'ai commencé à passer des entretiens, et je me souviens que mon premier était pour un poste Java dans une grande entreprise internationale située à Bucarest. (Indice : ils ont plus de 300 000 employés, et leur chiffre d'affaires pour 2019 était d'environ 77 milliards.)

Je n'ai pas passé l'entretien, mais je pense que la conversation était bonne. Je n'ai probablement pas été embauché parce que je n'avais aucune expérience.

Après cela, il m'a fallu un autre mois pour obtenir le prochain entretien.

Un ami que je m'étais fait lors du bootcamp m'a aidé en me recommandant. Si jamais il lit cet article, je veux le remercier.

Le poste était en fait celui de développeur Android pour une entreprise roumaine de sous-traitance qui avait un contrat avec une entreprise de télécommunications.

J'ai eu deux entretiens avec eux, principalement des questions techniques, et je me souviens encore quand ils m'ont appelé pour me proposer le poste.

Le salaire était petit, mais cela n'avait pas d'importance.

Je pense avoir commencé le bootcamp à la fin mai 2015, et j'ai commencé mon premier poste de développeur Android junior en janvier 2016.

C'était tout un accomplissement.

Mon manager m'a assigné un projet, puis j'ai commencé à apprendre le contrôle de version et comment travailler en Agile, et comment travailler en sprints de 2 semaines.

Si vous avez commencé à apprendre la programmation ou si vous voulez commencer, je recommande trois choses.

  • Commencez aujourd'hui (Optionnel si vous avez déjà commencé)
  • Faites autant de projets que possible
  • Apprenez le contrôle de version (Git, Bitbucket ou Gitlab) et poussez tous vos projets là-bas.

Peut-être que j'écrirai un autre article sur toutes ces choses.

Pendant mon temps dans cette entreprise, j'ai rencontré beaucoup de gens sympathiques et serviables. J'étais probablement ennuyeux pour beaucoup d'entre eux parce qu'au début, je demandais beaucoup d'aide.

Nouveau pays et plus d'emplois Android

9 mois plus tard, j'ai décidé que je voulais déménager à Londres parce que je recevais beaucoup de messages de recruteurs. J'ai aussi pensé que ce serait plus facile d'avancer ma carrière là-bas, puis de retourner à Bucarest.

J'ai eu de la chance que ma sœur vive là-bas, et elle a été assez gentille pour me laisser vivre avec elle.

Même lorsque j'avais des recruteurs qui me promettaient des entretiens et des choses comme ça, quand je suis arrivé là-bas, j'avais zéro réunion.

Je savais que ce ne serait pas facile, et j'ai postulé à beaucoup d'emplois en ligne.

Après deux semaines, j'ai obtenu un entretien dans une entreprise de services de télécommunications britannique. Ils avaient un petit département informatique, et leur développeur Android partait. Ils avaient des applications CRM Android internes, utilisées par leurs employés, et ils avaient besoin de quelqu'un pour la maintenance et pour développer de nouvelles applications.

C'était un contrat d'un an, et le salaire n'était pas génial (je l'ai découvert plus tard), mais encore une fois, j'étais heureux.

J'ai appris énormément cette année-là (par moi-même).

J'ai appris des technologies spécifiques à Android comme :

  • Qu'est-ce qu'une architecture comme Model-View-Presenter et comment l'utiliser dans une application
  • Comment faire des tests unitaires corrects
  • Les principes SOLID

Et ainsi de suite.

J'ai appris tout cela au travail et pendant mon temps libre. Je travaillais, et pendant mon temps libre, je construisais des applications pour moi-même.

À ce jour, toutes mes applications (5 sur Android) ont plus de 100k téléchargements, principalement organiques, mais une seule d'entre elles a rapporté plus de 2 000 USD.

J'ai travaillé pour l'entreprise de télécommunications pendant exactement un an. Je voulais essayer quelque chose de différent à Londres et travailler avec plus de développeurs Android.

Il m'a fallu un certain temps pour comprendre que, en tant que développeur logiciel, vous devez toujours faire plus que ce que vous faites au travail. C'est la même chose pour les médecins ou les avocats. Ils doivent régulièrement améliorer leurs connaissances pour être meilleurs que les autres.

Je me sentais prêt à travailler sur un projet plus important, mais je ne pense pas que j'avais assez de compétences.

Cela ne m'a pas découragé, et j'ai pris un poste Android dans une entreprise mondiale de sous-traitance.

J'allais travailler pour une grande banque britannique à Londres.

J'avais peur au début, mais il m'a fallu un mois pour me sentir comme faisant partie de ce projet.

J'ai passé trois entretiens avant d'entrer dans le projet.

Au cours de ma carrière, tous les entretiens que j'ai passés avaient deux ou trois étapes.

La première est généralement avec les ressources humaines où ils vous posent des questions sur votre expérience.

Le deuxième entretien pourrait être avec des questions techniques, des devoirs à faire à la maison ou des questions techniques avec quelques algorithmes.

Le troisième entretien pourrait être avec un responsable technique ou avec un manager ou encore avec quelqu'un des ressources humaines.

J'ai commencé à travailler à la banque dans une équipe Scrum propre. Nous étions 4 développeurs Android, 4 développeurs iOS, un chef de projet, un propriétaire de produit, 2-3 ingénieurs en assurance qualité, un analyste commercial, un rédacteur, des designers.

Toutes ces personnes développaient une partie cruciale de l'application. Le projet était énorme.

Rien que dans l'équipe de développement, il y avait plus de 30 développeurs Android et plus de 30 développeurs iOS.

Je suis resté dans ce poste pendant un an, comme pour mon emploi précédent. La raison ? Je voulais retourner en Roumanie.

J'ai eu la chance d'avoir seulement de bons collègues autour de moi.

Il n'est jamais mauvais de demander de l'aide si vous voulez apprendre. Nous avons tous commencé depuis le début, avec zéro connaissance. Je pense qu'il est terrible de ne pas vouloir apprendre quand on ne sait pas.

L'année à la banque m'a beaucoup appris, et cela semblait durer quelques années. J'ai appris :

  • Comment faire des revues de code
  • Comment travailler sur un projet qui nécessitait 100% de couverture de code pour les tests unitaires
  • Comment livrer des fonctionnalités à temps
  • Qu'est-ce que l'architecture propre et comment écrire du code facile à lire sans laisser une tonne de commentaires

Et bien plus que je ne me souviens probablement pas.

Retour à la maison avec plus de connaissances

C'était en novembre 2018 lorsque je suis retourné à Bucarest, après deux ans et un peu de vie à Londres.

C'était une excellente expérience, mais cela ne semblait pas être chez moi.

J'ai obtenu un nouvel emploi pour une autre entreprise roumaine de sous-traitance assez rapidement (2 semaines) après mon retour.

Il ne m'a fallu que quatre mois pour partir à nouveau pour un nouveau projet de six mois à Londres.

Je n'étais pas heureux de laisser ma petite amie seule, mais l'argent était bon pour seulement six mois de travail.

Je ne suis pas autorisé à divulguer aucune information sur le projet car j'ai signé un accord de non-divulgation, et aujourd'hui je travaille toujours pour eux. Mais je suis situé à Bucarest en ce moment. Je travaille pour l'entreprise actuelle depuis plus d'un an et demi.

Qu'ai-je appris sur ce projet ?

  • Comment créer une équipe
  • Comment démarrer une grande application à partir de zéro. Je serai probablement très fier une fois que nous la lancerons et que les gens l'utiliseront.
  • Comment adapter les exigences avec beaucoup d'inconnues.
  • Comment livrer en travaillant avec des gens du monde entier.

Cela a été un voyage fou.

Conclusion et ce que j'ai appris

Mon article dépasse les 2000 mots, et j'ai l'impression de ne pas vous avoir donné beaucoup de détails sur ce que j'ai appris. Je n'ai fait qu'effleurer la surface.

Ce n'était pas facile, mais je ne regrette pas d'avoir choisi cette carrière.

Si vous êtes moi il y a 5 ans, commencez simplement.

Vous aurez envie d'abandonner. Vous penserez que vous n'êtes pas assez intelligent, vous vous sentirez comme n'importe quel développeur qui passe quelques heures/jours à résoudre quelque chose sans succès et qui a ensuite un moment de génie.

Ce n'est pas mal de ne pas savoir, et aucune question n'est stupide. C'est terrible si vous ne voulez pas apprendre.

Aujourd'hui, plus de développeurs que jamais sont prêts à aider. Vous pouvez facilement trouver des groupes Discord où les gens sont heureux de répondre à vos questions de programmation. Il existe de nombreuses communautés Reddit qui seront utiles. Peut-être que les chaînes Slack peuvent aussi fonctionner pour vous. Trouver un mentor peut être une solution également.

Des sites web et des chaînes YouTube comme freeCodeCamp sont tout ce dont vous avez besoin pour commencer.

Voici toutes les choses que j'espère que vous avez apprises dans cet article :

  • Commencer est difficile, mais chaque jour d'apprentissage de quelque chose de nouveau vous donnera une énorme satisfaction.
  • Vous devez faire tous types de projets. Connaître les bases est bien, mais construire des choses et travailler avec le contrôle de version vous aidera à vous préparer pour un futur emploi.
  • Les gens sont prêts à aider (à la fois en ligne et les futurs collègues)
  • Il y aura des jours où rien ne fonctionnera. Vous ne trouverez pas de solution facilement. Soit détendez-vous et revenez au problème plus tard, soit demandez simplement de l'aide.
  • Tous les développeurs (junior, mid ou senior) recherchent des solutions sur Google et se bloquent fréquemment.
  • Vous ressentirez le syndrome de l'imposteur, mais croyez-moi lorsque je dis que j'ai rencontré des développeurs avec des diplômes en informatique qui sont moins bons que moi.
  • Être développeur ne consiste pas seulement à coder. Les compétences non techniques sont également importantes.

Si vous avez aimé cet article et que vous en voulez plus, veuillez me suivre sur Twitter. J'écris sur mon parcours en tant que développeur mobile, mes start-ups échouées/réussies, sur le marketing d'applications, et toutes sortes d'autres choses que j'ai apprises au cours des 10 dernières années.