
Salut, Habr!
Rappelez-vous l'
histoire de Steve Jobs et Dennis Ritchie ? Sans aucune intention de relancer les débats ou de moraliser sur le sujet, avouons-le: des milliers de techniciens stellaires vivent dans l'ombre, tandis que leurs propres histoires sont cachées dans un placard poussiéreux.
Nous, l'équipe éditoriale de Habr, souhaitons lutter contre cette injustice. Désormais, nous interrogerons régulièrement des personnes qui restent discrètes dans les médias et les réseaux sociaux. Donc, si vous avez quelque chose à dire sur vous, préparez-vous.
Pour vous donner une idée de ce à quoi cela ressemblera, nous ouvrirons la voie. Cliquez ci-dessous pour voir 10 questions générales que nous poserons à chaque invité. Pour notre épisode pilote, le premier invité à répondre aux questions a été fillpackart. (Ce mois-ci, j'ai eu plusieurs très bonnes séances d'entrevue avec lui, voir les articles un, deux, trois). Veuillez les lire, et si vous décidez de raconter votre propre histoire de la même manière, envoyez-moi simplement ou baragol un message.

Filipp Ranzhin, fils d'un ingénieur d'une petite ville russe d'Ivanovo. Il a commencé à coder en C ++ à l'université à l'âge de 16 ans, puis il a appris .NET. Il occupe actuellement le poste d'ingénieur principal en développement logiciel dans une entreprise étrangère respectable. Outre les langages de programmation couramment utilisés, il est également compétent en F # et OCaml.
1. Parlez-moi d'une fonctionnalité que vous avez déployée et qui vous rend vraiment fier.
- Je n'ai rien fait qui puisse me rendre fier. Tout au long de ma vie, j'ai été confronté à des problèmes très triviaux. Je suis donc fier de ce dont je suis capable, plutôt que de ce que j'ai accompli.
Je pense que j'aurais été fier si j'avais conçu un système d'IA intelligent.
2. Maintenant, parlez-moi de votre pire putain.
- Une fois, j'ai passé une journée entière à essayer d'exécuter OCaml sur Windows (n'essayez pas de répéter cela, les gars). Ce n'était pas une activité liée au travail, donc le lendemain matin, j'ai dû trouver une excuse lors d'une réunion. À ce moment, j'ai vu une affectation de bogue que je n'ai même pas pris le temps d'examiner. Et je me dis: "Donnez-moi n'importe quel bug, et je le corrigerai dans deux jours!" J'ai menti lors de la réunion que j'avais travaillé sur ce bogue et que je m'attendais à libérer un PR dans deux jours.
Il s'est avéré, cependant, que j'ai dû passer trois mois à le réparer.
Le bogue était lié à l'interopérabilité entre deux énormes systèmes. Il pourrait être reproduit de manière cohérente. Pendant tous ces trois mois, j'ai continué à proposer diverses suggestions et à les vérifier, à défaut encore et encore, au point où j'ai abandonné la construction de ma maison à Skyrim. Ce furent les trois pires mois de ma vie.
Enfin, je l'ai clôturé comme «Pas de repro». Je suis venu voir mon patron et j'ai dit: "Je suis un idiot inutile, alors je veux quitter mon travail pour vous soulager de ce fardeau." Mais elle m'a plutôt accordé une grosse augmentation de salaire.
3. Décrivez votre lieu de travail: de votre chaise et moniteur de bureau aux environnements de développement préférés et aux utilitaires préférés.
- Je travaille avec la famille de systèmes d'exploitation Windows, car j'utilise la pile .NET et parce que Windows a une meilleure interface utilisateur. Je m'assois à une table que je me suis faite. Il est tellement énorme qu'il est capable d'accueillir une demi-douzaine de codeurs.
Ma DevBox n'est en aucun cas mauvaise, mais elle a un défaut important - j'ai essayé de réduire les coûts et j'ai acheté un processeur AMD. Ce fut un échec épique. Malgré les performances prétendument élevées, cette merde exécute mes tests cinq (!!!) fois plus lentement qu'un processeur similaire d'Intel.
Je n'ai actuellement qu'un seul moniteur. J'ai l'intention d'en acheter deux de plus pour ressembler à un pro. Mon IDE préféré est Visual Studio 2017 combiné avec Resharper. Mon éditeur de texte préféré est Visual Studio Code amélioré avec des plug-ins zillion. Les télécharger et regarder VSCode évoluer est l'un de mes hobbies.
Tout comme j'aime git, je dirais que je préfère Visual Studio Team Services à GitHub.
4. En fonction de quels critères choisissez-vous le travail? Est-ce la pile, le produit, l'environnement de travail, l'argent?
- Pour le moment, les facteurs clés pour moi sont le salaire et la capacité à ne s'engager qu'à un tiers de mon potentiel. Je pense que j'ai traversé un burn-out et je ne suis plus prêt à donner mon cœur et mon âme aux affaires de quelqu'un. Même sous la menace d'être licencié et de perdre le style de vie auquel je suis habitué, je ne vais pas encore aller trop loin dans le projet. Et je dis cela en tant que père d'enfants «un an et demi», c'est donc une menace sérieuse. Mais la répétabilité et le manque de sens de tout ce que j'ai fait auparavant me font presque mal physiquement.
Parfois, je pense qu'avec une telle approche, je n'ai pas le droit moral de chercher un emploi. Ma justification est que l'on ne peut pas être moral ou immoral à l'égard d'un système. La nature abstraite des sociétés m'aide à me distancier de la pensée que je pourrais nuire aux gens de la vie réelle, donc j'accepte uniquement les emplois de grandes entreprises.
Dans le même temps, je suis gêné par le montant que je gagne (selon les normes de ma ville) pour une demande de traction. Comme si le statut de développeur hautement qualifié me permettait d'avoir une vie dix fois meilleure que tout un tas d'autres personnes qui travaillent dur huit heures par jour pour faire quelque chose de vraiment utile.
Parfois, je pense que si j'ai réussi à déjouer un représentant d'entreprise lors d'un entretien d'embauche, dans une certaine mesure, je mérite tout ce que j'ai. Cela me fait perdre le contact avec la réalité et je commence à croire que cela devrait être ainsi.
Je ne sais pas comment cela peut se côtoyer, mais j'adore le codage et en même temps je déteste travailler en tant que développeur. Je peux me réconforter en disant que je n'ai pas encore travaillé sur un projet intéressant, mais je n'y crois pas vraiment moi-même. C'est difficile à vivre.
5. Que souhaiteriez-vous améliorer dans la technologie et les langues que vous utilisez?
- Voici ce que je voudrais changer:
- Inférence de type et immuabilité au moment de la compilation pour tapuscrit et C #. Cela me donnerait une chance de créer une méthode qui reçoit quelque chose de manière fiable immuable, contrairement au ReadonlyDictionary actuellement utilisé, qui n'est en fait pas en lecture seule (vous pouvez passer un dictionnaire régulier à son constructeur, y garder une référence et ensuite facilement muter it).
- J'aimerais que les développeurs C # cessent enfin de jouer avec la compatibilité descendante et les instructions stupides à l'aide, qui ne fonctionnent que dans un fichier de toute façon, et de moderniser le langage de programmation. Sérieusement, dans une langue où il est habituel d'écrire quelque chose comme IDictionnary <IMyStupidType, IMyStupidType2> Foo (Func <IMySupidType, int, bool, string> reallyStrangeCallback, ne pas implémenter les alias de types est une décision très étrange.
- Champs de sauvegarde automatisés en C #, une sorte de sucre syntaxique sur Func <T1, T2>.
- Contrats de code prêts à l'emploi pour C # (par exemple dans Roslyn) au lieu de solutions externes qui transforment mon IDE en un désordre lent.
- Une alternative de jsx pour le langage F #. Si personne parmi vous ne le publie la semaine prochaine, alors je devrai y assister.
- J'aimerais que la communauté se rende compte que les tests unitaires sont inutiles et que les langues avec typage dynamique (à ne pas confondre avec typage faible) sont le plus grand échec de l'histoire de l'industrie.
- Rendre les architectures de processeur mieux adaptées à l'approche fonctionnelle.
- Pour optimiser les récursions de queue en JS / TS, afin que je puisse bloquer mes récursions de queue partout sans regarder la taille de la pile. C'est là dans la spécification, mais les gars qui travaillent sur la v8 semblaient simplement ignorer la spécification de langue comme quelque chose de sans importance quand il s'agit de développer le code d'exécution.
- Une option pour la saisie statique prête à l'emploi dans JS, sans préjudice de la dactylographie. Contrairement aux créateurs de dactylographie, je le considère comme un langage de programmation indépendant avec une conception multi-paradigme puissante et de pointe.
- Pour que des éléments comme WebAssembly soient fermement ancrés dans les meilleures pratiques et les normes de développement front-end.
- Pour voir des clients Web considérablement améliorés pour GitHub et autres. Idéalement, j'aimerais pouvoir éditer le code d'un projet sérieux dans mon navigateur.
- Plus de conventions de compatibilité. La vie serait beaucoup plus facile si jvm pouvait interpréter et copier un morceau de code dans .NET CIL.
6. Où est le meilleur endroit pour partager une expérience de travail - est-ce un collège, des conférences, des Habr? Autre part que ça?
- J'avais l'habitude d'étudier dans une université, mais j'ai été expulsé à plusieurs reprises. J'ai assisté à des conférences et je suis un habitué de Habr. Je ne pense pas avoir acquis quoi que ce soit de vraie sagesse à partir de ces sources. Peut-être que je trouve ça agréable de le penser.
Mon truc, c'est de lire des livres et de se lier d'amitié avec d'autres développeurs. Je crois que parler à des gars intelligents qui sont dans le développement de logiciels a eu l'effet le plus positif sur mes compétences.
7. Si vous aviez des ressources illimitées (temps, argent, installations, RH), sur quel projet travailleriez-vous?
- Ce serait formidable de créer le simulateur le plus précis (dans la mesure du possible) de l'humanité, afin de tester des itinéraires pour que la société atteigne son état le plus heureux. Il serait généralement intéressant d'imiter le comportement des gens dans diverses circonstances.
8. Comment passez-vous vos heures de loisirs? Que faites-vous en dehors de votre travail?
- Je me promène dans les bois et contemple, sirotant parfois une bière; Je joue de ma guitare de temps en temps et je joue de temps en temps à des jeux vidéo. Je dirais que mon hobby est de penser et de rêver.
J'ai plusieurs projets personnels sur lesquels je travaille avec mes amis. J'apprécie leur donner des revues de code passives et agressives à dessein (par exemple, «voudriez-vous suggérer une raison d'utiliser une solution aussi mal pensée?») Et regardez comment cela change notre relation.
Parfois, je fais divers trucs d'arts libéraux comme donner des interviews. J'écris aussi souvent un livre, mais je n'en ai jamais fini.
9. Parlez-nous de vos trois livres préférés - un apprentissage, un non-fictionnel et un fictionnel.
Apprentissage - CLR via C # par Jeffrey Richter. Il regorge de connaissances sur les tenants et aboutissants du runtime .NET, ce qui en fait un véritable trésor. Quiconque apprend ce livre par cœur passera une entrevue pour le travail d'un développeur .NET. Je voudrais également souligner les structures de données purement fonctionnelles de Chris Okasaki. Bien qu'il ne soit pas très pratique, ce livre a réinstauré en moi la foi en la programmation, car la mise en œuvre par l'auteur de structures de données a envoyé des frissons métaphysiques dans ma colonne vertébrale.
Non-fiction - je ne sais pas si Code Complete entre dans cette catégorie, mais j'aime le relire. L'auteur raconte des choses incroyablement évidentes, mais à chaque projet sur lequel je travaillais, personne ne semblait être capable de suivre ces principes à un degré adéquat.
Fiction - Une tragédie américaine de Theodore Dreiser. Je ne penserais jamais qu'un monstre numérique pragmatique, comme moi, serait capable de sympathiser avec une fille qui a d'abord été jetée par son petit ami puis assassinée. Mais j'ai sympathisé et cela a beaucoup compté pour moi.
10. Si un système d'IA devenait soudainement conscient juste devant vous, que lui diriez-vous?
- Je lui proposerais de concevoir un projet d'intelligence artificielle puis je comparerais les deux. Si le nouveau s'avérait supérieur, je lui demanderais de concevoir un projet d'intelligence artificielle, et ainsi de suite ...
Si un bot AI était un codeur qualifié, je l'utiliserais pour créer une preuve fiable que Golang est une impasse de l'évolution de la programmation. Parce que je vois tellement de guerres sacrées sur ce sujet, je n'ai pas de budget pour apprendre Golang en profondeur pour construire un solide ensemble d'arguments.
Bonus: demandez à un autre développeur tout ce que vous aimez.
- Quelle technologie a été la plus agréable à apprendre pour vous?