Tout le monde en Angleterre est obsédé par le football. Beaucoup d'équipes amateurs et des tonnes de stades. Et par le biais de certaines connaissances, un Anglais s'est approché de moi qui avait une idée et un peu d'argent - il m'a demandé de faire une application dans laquelle les gens pourraient gérer leur équipe de football amateur. Placez les gens sur le terrain, effectuez des substitutions, recherchez des joueurs, réservez des stades et discutez.
A cette époque, j'ai vécu une période étrange de ma vie - et je ne sais pas du tout comment j'ai survécu. L'Université pendant la journée, le travail de nuit comme backend en service jusqu'au matin, et quelque part entre les cours de développement Android. De plus, j'avais assez d'énergie et d'enthousiasme pour y aller non pas pour le spectacle, mais pour vraiment prendre feu.
J'ai donc accepté de travailler. Et c'était juste une sortie après ce que j'ai vécu dans le développement backend.
Dans mon école, dans la classe de mathématiques, il y avait un panneau avec une inscription qui m'a immédiatement intrigué. Ensuite, j'ai été plus d'une fois convaincu de l'exactitude de ces mots:
Le programme ne fait pas ce que vous voulez, mais ce qui est écrit
Quand je suis entré à l'université, lors d'une réunion avec les professeurs, j'ai dit, disent-ils, je veux être programmeur. J'étais assuré - vous le ferez. Certes, ils ont ajouté que pour devenir programmeur, vous devrez étudier toute votre vie. Ayant en quelque sorte interprété cela à ma manière, je n'ai pas prolongé la formation pour une vie et je l'ai entassée au complet: couples à l'université, cours le soir, pigiste le soir.
La recherche d'un emploi à temps partiel m'a amené dans un projet intéressant: le développement d'un moteur de reconnaissance vocale du côté positif. Ensemble avec l'équipe, nous nous sommes battus pour le pourcentage de reconnaissance: j'espérais vraiment pomper la voiture à 100% du résultat!
C'était la vraie douleur d'un perfectionniste. J'ai proposé mes propres solutions, pris les moteurs open source d'autres personnes, les ai démontés en rouages et les ai remontés. J'ai personnalisé le code, je n'ai pas dormi la nuit, j'ai picoré par paires. J'ai déroulé des kilomètres de code pour quelques pour cent à la ligne d'arrivée.
Rien n'en est sorti. Ce n'est que quelques années plus tard que j'ai découvert que c'était impossible. J'ai appris que le réseau neuronal de Facebook reconnaît les visages avec une probabilité de pas plus de 95%. J'ai sympathisé avec Facebook: même une si grande entreprise n'a pas réussi à atteindre la centaine. Et aussi dans l'article, il y avait un excellent post-scriptum qu'une personne reconnaît les visages avec une probabilité de 93%. Sérieusement?
Donc pour la première fois j'ai été un peu déçu du développement
J'ai essayé le frontend, mais tout ce que je savais sur eux se situait alors dans le domaine du stéréotype «ils font des sites Web». Cela semblait ennuyeux même alors. Je voulais quelque chose de plus intéressant. Pour trouver une nouvelle zone, j'ai déménagé à Skolkovo.
La magistrature de Skolkovo a payé une bonne bourse. Mais si vous voulez vivre à Moscou à grande échelle, clouez un peu plus. Je suis tombé sur un poste vacant pour une entreprise du secteur financier. Il fallait répondre en python et parfois être de service la nuit.
Lors de l'entretien, j'étais complètement motivé par le multithreading, par les avantages sur un morceau de papier (c'était difficile d'écrire du code à la main). Ils ont demandé des informations de base sur Python, et à la fin, ils l'ont pris.
Avant cette entreprise, je ne travaillais qu'en petites équipes. Cinq d'entre nous ont travaillé dans le cas de la reconnaissance vocale, mais ici, la pomme n'avait nulle part où tomber des développeurs. Et ils en savaient tous plus que moi. J'ai été bombardé de questions et heureux lorsque mon travail a reçu des commentaires. Les trois premières semaines, j'ai maîtrisé le métier. Chaque révision de code s'est terminée par une «mauvaise» réponse. J'ai tout refait, mais ça ne s'est pas amélioré. Mon code devait être approuvé par au moins 4 personnes. Parfois, trois ont dit «normes», et le quatrième a encore trouvé de quoi se plaindre.
Ils m'ont également montré une façon intéressante de réviser - je donne le code au chef de file, il marque certains endroits, mais ne dit pas quel est le problème, je dois essayer de le comprendre moi-même. Et vous commencez vraiment à penser - c'est très excitant.
Mais même un contrôle de qualité aussi strict ne nous a pas épargné des ennuis.
Le travail concernait les bases de données. Les serveurs de l'entreprise stockaient des tonnes d'informations financières sur les clients (cartes bancaires, historique des transactions). Une fois tous les 5 jours, il y avait une nuit que je devais passer au travail. Je me suis assuré que tout fonctionnait, répondais au courrier et aux appels. J'ai aimé les quarts de nuit. Pour la sortie, ils n'ont même pas payé un double, mais un triple. Je me suis assis de 21 heures à 6 heures du matin - j'ai été payé comme pour 3 jours. De quoi d'autre un étudiant a-t-il besoin?
En plus de l'argent, l'étudiant doit dormir suffisamment
Dans notre entreprise, tous les processus de travail ont été construits sans problème. Contrôles, tests, revues. Encore une fois des vérifications, des tests et des examens. Mais même un tel système peut échouer, et vous devez être prêt à être réveillé le matin en cas d’alarme, comme un conscrit.
Un beau jour, je suis rentré de mes fonctions. Je suis juste tombé de mes pieds. Je suis allé à l'université - dépeint un étudiant. Le soir, je me suis évanoui mort, et il n'était même pas huit heures. Je voulais dormir pour l'éternité, rien de moins.
Mais à 4 heures du matin, j'ai été réveillé par la personne qui était responsable de tout le soutien de l'entreprise - il m'a appelé pour la première fois.
- Avez-vous fait quelque chose avec la base hier?
- Non, rien de spécial.
- Levez-vous et allez à votre ordinateur de toute urgence.
Je suis une personne du matin, bien sûr, mais je suis toujours devenue folle de l'appel. Ma montre était à la veille de l'accident.
Bien sûr, la première pensée est que j'ai tout cassé
Il s'est avéré que tout un groupe d'utilisateurs venait d'être coupé. Elle n'était pas dans le magasin. Mais elle a toujours existé ici, où est-elle tombée? J'ai commencé à chercher. Regardé les journaux qui ont commencé. J'ai commencé à fumer ces journaux (la première demi-heure a été consacrée au réveil, une autre demi-heure - pour réchauffer les journaux et comprendre quels scripts ont été lancés). J'ai téléchargé les scripts pour moi-même, j'ai regardé ce qu'ils faisaient, j'ai trouvé lequel d'entre eux était monté dans cet endroit particulier. Et j'ai trouvé une erreur.
Lancement sur un environnement de test - utilisateurs de test sciés. Hmm, regardé comment cette chose a été testée. Pour une raison quelconque cette fois, même si nous avons trois devstends, le premier et le deuxième ont été manqués, et le troisième n'est même pas tombé. Personne n'a écrit de test pour cela (je me suis coché pour écrire pour que cela ne se reproduise plus).
En parallèle avec moi, beaucoup de gens étaient assis et cherchaient un problème, appelant constamment. Finalement, à 6 heures du matin, nous nous sommes rendu compte que quelqu'un avait écrit un script, l'avait vérifié sur un test, mais n'avait pas pris en compte un cas important. En conséquence, les utilisateurs tombaient sous ceux qui étaient susceptibles d'être supprimés.
Nous avons donc frappé environ un million d'utilisateurs du jour au lendemain
Nous avons restauré la base de données, fait une sauvegarde. Jusqu'à ce que nous connaissions le problème, les utilisateurs saisissaient de plus en plus de données tout au long de la nuit. Nous avons écrit à tout le monde à propos d'un problème technique, fermé l'entrée pour qu'il n'y ait pas de flux d'informations nouvelles. Il était nécessaire de geler la base de données en 7 heures, de la remettre à celle qui était nulle, de renvoyer tous les utilisateurs. Pour ceux qui ont essayé de participer, mais n'ont pas pu, la société a annulé des excuses distinctes, chargées de bonus.
Nous avons tout réglé à 7 heures du matin. À 8 heures, la société a licencié l'homme qui avait tout préparé.
Le gars a bien travaillé, il a toujours tout vérifié. A quelques reprises, il m'a même passé en revue et m'a suggéré des choses vraiment cool. Mais c'est comme conduire. Lors de la première année au volant, vous avez peur de tout et crapahutez dans la bonne voie. Ensuite, vous vous détendez un peu, et en ce moment même vous avez un accident!
Vais-je congédier une personne pour une erreur? "Le programme fait ce que vous l'avez écrit." Mais nous sommes développés, nous faisons constamment des erreurs. Imaginez à quel point ce type était mauvais ce matin-là. Et pourquoi mettre en place une personne qui va maintenant vérifier chaque caractère de son code? Mais la direction voulait du sang, et au cours des deux prochaines semaines, plusieurs autres personnes impliquées dans cette affaire se sont envolées.
J'y ai travaillé encore quelques semaines, mais j'ai déjà réalisé que je voulais quitter le backend.
À Skolkovo, j'ai remarqué à quel point je suis intéressé par un projet de développement Android. Nous avons développé une application et l'avons liée à arduino. La tâche était assez simple: vous deviez vous connecter à l'arduino via bluetooth ou wifi depuis votre téléphone et envoyer la commande. L'application avait quelques écrans avec des boutons. Tel que conçu, l'arduino était associé à l'agencement d'une maison intelligente et ces boutons étaient censés ouvrir et fermer les fenêtres.
Il y avait plus qu'assez de raisons de tomber amoureux d'un androïde à première vue
J'ai vraiment aimé qu'il y ait une interface utilisateur. J'ai aimé la possibilité de faire des animations (maintenant dans le développement Android, j'aime le plus). La documentation de Google était bien meilleure que ce que j'avais vu auparavant. Java a dépassé Python et C ++. Pendant que je suivais des cours sur Android sur le curseur, j'ai réalisé une chose:
il est important pour moi de voir immédiatement le résultat.
Cela m'a également permis d'expliquer plus facilement ce que je fais. Essayez de dire à la personne ce qu'est un travail backend. Pourquoi est-ce nécessaire et ainsi de suite. Avec un Android, il vous suffit de sortir votre téléphone et de dire - J'ai créé cette application.
Cette affaire avec le football - j'ai reçu un projet écrit par des Indiens. Pour être honnête, ils n'ont pas très bien réussi. Au lieu d'extraire du code dans une fonction, ils ont copié à nouveau 700 lignes. Le refactoring a duré deux semaines.
Et je l'ai quand même fini et je me suis défoncé. J'ai réalisé que je voulais continuer à faire cela et j'ai commencé à chercher une entreprise avec laquelle travailler. Je suis passé par l'e-legion de l'école Android, j'ai fait un test, j'ai trouvé un emploi - et maintenant je dirige le développement Android ici.
Et je suis incroyablement heureux qu'à quatre heures du matin, ils ne me soulèvent pas pour sauver les bases en feu, et ils ne m'obligeront pas à dresser des listes d'exécution plus tard.