Aujourd'hui, exactement six mois après vingt ans dans la science, je suis allé dans une startup qui développe des logiciels de création de données synthétiques, dans lesquels j'intègre des systèmes de machine learning dans le produit final. Puisqu'il y a des gens ici qui décident encore de faire un tel pas, je décrirai mon chemin, ou plutôt, un changement dans la direction de mon chemin.
Académie
Je suis physicien professionnel et j'ai obtenu un doctorat. au Département de physique de l'Université d'État de Moscou. Il a travaillé à la fois en physique théorique et en expérimental. Articles dans Nature et PRL, plus de 700 citations et index Hirsch 14. Ces détails ne sont pas pour mesurer quelque chose avec quelqu'un, mais pour comprendre la situation dans son ensemble. Si nous prenons des contrats d'une durée supérieure à un an, alors à des postes aussi longs, il a travaillé dans quatre pays d'Europe occidentale. Tout irait bien, mais récemment, la science a commencé à devenir une entreprise. Les universitaires ne pensent qu'à obtenir un poste permanent. La recherche constante d'argent pour la recherche - la rédaction de demandes de subvention a commencé à prendre plus de temps qu'à faire de la science directement. Si vous n'avez pas de projet ERC (European Research Council), alors vous ne serez pas intéressé par une université européenne plus ou moins normale, même si vous avez un tas d'excellentes publications et projets. De plus, tous les efforts finaux peuvent se transformer en rien. Quelles sont les chances ultimes d'obtenir un poste? De 0,5 à 2% quand on arrive au bon endroit au bon moment, c'est une question de chance (bonjour à Daniel Kahneman et Nassim Taleb). Dix ans de recherche peuvent s'avérer inutiles, pas «à la mode». Ces activités ont commencé à apporter de plus en plus de déceptions. Et si le travail cesse de faire plaisir, alors tout ce qui l'entoure cesse de plaire. Oui, et les statistiques indiquent qu'il est peu probable que la situation s'améliore. Ainsi, la décision de mettre fin à sa carrière universitaire a été prise. La question d'activités supplémentaires pour moi était évidente - la programmation. Mais vite le conte affecte, mais pas vite la chose se fait ...
Programmation
Pourquoi la programmation, pas les bases de données? Tout est simple ici - j'avais au moins une certaine expérience en programmation et en développement logiciel. Oui, c'était une expérience de développement limitée pour un usage académique personnel et interne, mais mes logiciels fonctionnent et d'autres personnes l'utilisent dans les laboratoires et dans les calculs. J'ai développé des systèmes pour collecter des données et surveiller de grandes installations expérimentales (par exemple, un réfrigérateur à dissolution avec un sous-système de démagnétisation nucléaire), l'analyse et la visualisation des données en Python. Avant cela, Fortran utilisait beaucoup et un peu de C ++ pour les calculs numériques. En tout cas, cette expérience n'a pas été suffisante pour la transition. Il était nécessaire de «tirer vers le haut» ou d'apprendre beaucoup de nouvelles choses à la fois dans la programmation (y compris les algorithmes et les structures de données) et dans la conception de logiciels. Je me suis fixé un délai d'un an, c'est-à-dire que c'était la date limite pour ma transition, puisque mon contrat se terminait alors, et je n'avais pas l'intention de le renouveler, bien que j'en ai eu l'occasion. Il a également «esquissé» un petit plan de formation pratique, qui comprenait, par exemple, la création de jeux Python en utilisant des scripts du livre «Programming Games and Puzzles» (Jacques Arsac, 1985) et divers petits programmes de «The Programmers Idea» (Coders Lexique). Au fait, j'ai toujours utilisé le premier livre il y a de nombreuses années quand j'ai écrit des jeux pour Spectrum ZX. En parallèle, il a commencé à étudier deux autres langages de programmation - JavaScript et Go. En principe, tout se passait bien, le bénéfice des ressources de formation, des livres, des exemples sur Internet est désormais largement suffisant. Cependant, après un certain temps, j'ai commencé à ressentir le besoin de communiquer personnellement avec des personnes directement impliquées dans le développement de logiciels, ainsi que de travailler ensemble sur un projet. J'ai commencé à chercher de telles opportunités, étant donné que je continuais à travailler à l'université et à m'auto-former. Et, bien sûr, les mitaps sont venus à la rescousse ...
Réunions, projets
L'un des premiers groupes était FreeCodeCampVienna, qui se concentrait principalement sur la programmation Web, mais c'était normal, car la communication et les contacts étaient importants pour moi, tout en acquérant de l'expérience en travaillant ensemble. Après la troisième ou la quatrième réunion, nous avons organisé un petit groupe de cinq personnes (il ne restait alors que trois) pour travailler sur le projet WebTags, qui vous permet de poster des messages à des amis ou des groupes sur n'importe quel site Web. J'ai fait le backend, car je ne suis pas très sympathique avec le web design, c'est le moins qu'on puisse dire. Malheureusement, nous avons apporté le projet uniquement à MVP et fait quelques présentations lors des réunions, mais d'une manière ou d'une autre, il n'est pas allé plus loin, mais j'ai acquis les connaissances nécessaires. Comme dans un autre projet, «CarTalk - Une communauté conçue pour les passionnés d'automobile», lancée dans l'équipe Chingu Voyage-7 (une plate-forme mondiale gratuite pour ceux qui veulent apprendre à travailler sur des projets communs) n'a pas été achevée. À ce moment-là, j'avais déjà commencé à visiter d'autres groupes, y compris ceux liés aux données - Vienna School of AI, Deep Learning Meetup à Vienne, Vienna Data Science. Mes intérêts ont commencé à évoluer vers l'apprentissage automatique et l'IA, car il y avait en eux une certaine «nature scientifique» qui ne pouvait pas m'intéresser ...
Un peu sur la science des données
La capacité de ne pas s'éloigner de la science et de s'engager en même temps dans la programmation m'a intrigué. J'ai trouvé et suivi plusieurs cours en apprentissage automatique, en IA et en travail avec les mégadonnées. Il y avait de la pratique aux réunions, mais pas autant que nous le souhaiterions. Cependant, la principale priorité pour moi est restée la communication et les contacts. À ce moment-là, environ huit à neuf mois de la période de transition que j'avais fixée s'étaient déjà écoulés et j'ai commencé à refaire mon curriculum vitae. Ceux qui ont travaillé en science savent que le curriculum vitae est utilisé dans la communauté scientifique, qui comprend presque tous les détails de l'activité scientifique. Nous avons dû insérer un CV de huit pages dans un CV d'une page. D'une part, le problème est mineur, car le CV scientifique contient beaucoup d'informations non pertinentes qui n'intéressent que les universités. D'un autre côté, il n'était pas clair quelles informations pourraient être utiles. En fin de compte, il a inclus presque tout ce qui concerne le développement de logiciels et l'analyse de données, ainsi que des travaux sur des projets tiers. Il m'a fallu environ deux semaines pour traiter le CV. Il me restait environ deux mois à partir du temps que j'avais alloué et j'ai commencé à postuler pour des postes vacants. Il convient de noter que c'était en décembre - un mois où il y a beaucoup de vacances, et en effet, tout attend généralement Noël et le Nouvel An. J'ai également compris que mes compétences et mes connaissances pour travailler directement, par exemple, en tant qu'ingénieur en machine learning, n'étaient toujours pas suffisantes, alors je me suis concentré sur les entreprises engagées dans les données, mais avec des postes de développeur ouverts ...
Chercher
Et j'ai commencé à envoyer mon CV. Dans la plupart des cas, ils ont répondu assez rapidement - en deux à trois jours. À ma grande surprise, tous n'ont pas répondu instantanément. Nous avons été invités pour quelques entretiens après des entretiens téléphoniques et des tests. Cependant, il a reçu des refus. Il y en avait une dizaine. Pendant tout ce temps, j'ai continué l'auto-éducation et la communication sur les réunions. J'ai écouté, fouillé, posé beaucoup de questions. Peut-être que quelqu'un a dérangé, mais pour la plupart, il a reçu des commentaires amicaux. J'ai ensuite été frappé par la communauté des dataines avec son ouverture, que je n'ai pas vue depuis longtemps ou très rarement dans un environnement scientifique "normal". Intéressé par plusieurs sujets, dont la génération de données synthétiques et la protection des données privées. En fait, cela ressemblait à de la magie. Créer un visage humain ou générer du code C tout à fait adéquat à l'aide de systèmes d'apprentissage automatique. Enfant, j'ai lu dans un livre ou un magazine un programme qui pouvait écrire de la poésie. Ensuite, j'en ai écrit un pour Sinclair Spectrum ZX, mais il était juste en train de s'écraser et de remplacer les bons mots aux bons endroits. Et ici, il n'y a pas d'algorithme codé en dur pour créer quelque chose de nouveau qui n'existait pas, mais cela a du sens! En un mot - cool. J'ai commencé à approfondir ces sujets, à lire la littérature et à rechercher des algorithmes. J'ai écrit plusieurs lettres à des personnes qui travaillaient sur ce sujet en Autriche et autour de janvier j'ai reçu une invitation à faire un entretien téléphonique avec eux. directeur de démarrage. Dans le même temps, j'ai reçu une invitation d'une des sociétés qui développaient des logiciels scientifiques, mais je voulais des données ...
Offrir
Après un entretien téléphonique avec le directeur de la startup, j'ai été invité à un entretien au bureau de l'entreprise et m'a envoyé quelques tâches pratiques, dont l'une était juste pour les algorithmes, et l'autre était liée à l'analyse et à la transformation des données en Python. Les tâches n'ont pas posé de difficultés, seuls les noms de certaines fonctions m'ont paru étranges. Comme je l'ai découvert plus tard, ces tâches ont été «extraites» du vrai code écrit à l'origine en R. L'interview a eu lieu fin janvier, ce qui signifie que je pouvais facilement respecter les délais prévus et ne pas renouveler mon contrat à l'université. Les entretiens ont principalement porté sur la programmation, les tâches de test et les questions générales sur l'adéquation et la stabilité psychologique. Nous avons parlé au total environ deux heures. Tout s'est passé comme si nous nous connaissions depuis de nombreuses années - pas de tension. Quelques jours plus tard, j'ai reçu une offre pour le poste d'ingénieur logiciel senior. Et ici, c'est devenu effrayant. Tout d'abord, j'ai refusé l'offre dans une autre entreprise développant des logiciels scientifiques, mais c'était sans trop de tourments. Le principal problème est que j'ai fait ce que je voulais. Et maintenant, il fallait faire le dernier (ou le premier?) Pas - quitter la science que je faisais depuis vingt ans. J'avais cinq jours pour décider, le plus long de ma vie. Mais comme on dit, dit «A», dites «B». Et après avoir travaillé pendant le mois requis à l'université, je suis allé dans une startup ...
Démarrage
Aujourd'hui, je peux dire que je suis heureux d'avoir commencé ma nouvelle vie non pas dans une grande entreprise, mais dans une petite startup. J'aime que je puisse communiquer avec chaque membre de l'entreprise. Tout le monde fait son travail. Et en plus, nous savons ce que nous faisons et pourquoi. La première semaine n'a pas été la plus difficile, j'ai surtout traité des corrections de bugs. Mais les petites entreprises ne peuvent pas se permettre un tel luxe, alors dix jours plus tard, j'intégrais déjà l'algorithme de confidentialité différentielle dans notre «moteur», ce qui nécessitait une étude et une compréhension plus approfondies de Tensorflow et Keras, ainsi que de l'algorithme lui-même. Après cela, le développement et la mise en œuvre d'un encodeur qui pourrait traiter des fichiers contenant des dizaines de millions de lignes et plusieurs milliers de colonnes de différents types dans un délai raisonnable. Pour ce faire, j'ai étudié le Spark et le cloud computing. Maintenant l'implémentation et l'intégration SaaS ... Chaque jour quelque chose de nouveau. Dix à douze heures par jour qui volent comme une heure ...