
Hallo Habr!
Erinnerst
du dich an die
Geschichte von Steve Jobs und Dennis Ritchie ? Lassen Sie uns der Wahrheit ins Auge sehen, ohne die Absicht zu haben, die Debatten neu zu entfachen oder zu moralisieren: Tausende herausragender Technikfreaks leben im Schatten, während ihre eigenen Geschichten in einem staubigen Schrank versteckt sind.
Wir, die Redaktion von Habr, sind sehr daran interessiert, diese Ungerechtigkeit zu bekämpfen. Von nun an werden wir regelmäßig Menschen interviewen, die sich in Medien und sozialen Netzwerken zurückhalten. Wenn Sie also etwas über sich zu erzählen haben, machen Sie sich bereit.
Um Ihnen eine Vorstellung davon zu geben, wie dies aussehen wird, werden wir den Weg weisen. Klicken Sie unten, um 10 allgemeine Fragen zu sehen, die wir jedem Gast stellen werden. In unserer Pilotfolge war fillpackart der erste Gast, der die Fragen beantwortete. (Diesen Monat hatte ich mehrere recht gute Interviews mit ihm, siehe Artikel eins, zwei, drei). Bitte lesen Sie sie und wenn Sie sich dazu entschließen, Ihre eigene Geschichte auf ähnliche Weise zu erzählen, senden Sie mir einfach eine Nachricht oder baragol.

Filipp Ranzhin, Sohn eines Ingenieurs aus einer kleinen russischen Stadt in Iwanowo. Mit 16 Jahren begann er an der Universität mit dem Codieren in C ++ und lernte später .NET. Derzeit arbeitet er als Senior Software Development Engineer bei einem angesehenen ausländischen Unternehmen. Neben den häufig verwendeten Programmiersprachen beherrscht er auch F # und OCaml.
1. Erzählen Sie mir von einer Funktion, die Sie bereitgestellt haben und die Sie wirklich stolz macht.
- Ich habe nichts gemacht, was mich stolz machen könnte. Während meines ganzen Lebens habe ich mich mit sehr trivialen Problemen befasst. Ich bin stolz auf das, wozu ich fähig bin, und nicht auf das, was ich erreicht habe.
Ich denke, ich wäre stolz gewesen, wenn ich ein intelligentes KI-System entworfen hätte.
2. Erzähl mir jetzt von deinem schlimmsten Mist.
- Einmal habe ich einen ganzen Tag lang versucht, OCaml unter Windows zum Laufen zu bringen (versuchen Sie nicht, dies zu wiederholen, Leute). Dies war keine arbeitsbezogene Aktivität, daher musste ich mir am nächsten Morgen bei einem Treffen eine Entschuldigung einfallen lassen. In diesem Moment sah ich eine Fehlerzuweisung, die ich mir nicht einmal angesehen hatte. Und ich sage: "Gib mir einen Fehler, und ich werde ihn in zwei Tagen beheben!" Ich habe bei dem Treffen gelogen, dass ich an diesem Fehler gearbeitet habe und erwartet habe, in zwei Tagen eine PR zu veröffentlichen.
Es stellte sich jedoch heraus, dass ich stattdessen drei Monate damit verbringen musste, das Problem zu beheben.
Der Fehler hing mit der Interoperabilität zwischen zwei großen Systemen zusammen. Es konnte konsistent reproduziert werden. Während all dieser drei Monate kam ich immer wieder auf verschiedene Vorschläge und überprüfte sie, wobei ich immer wieder versagte, bis ich den Bau meines Hauses in Skyrim aufgab. Das waren die schlimmsten drei Monate in meinem Leben.
Schließlich schloss ich es als "No Repro". Ich kam zu meinem Chef und sagte: "Ich bin ein nutzloser Idiot, also möchte ich meinen Job kündigen, um Sie von dieser Last zu entlasten." Aber sie gab mir stattdessen eine große Gehaltserhöhung.
3. Beschreiben Sie Ihren Arbeitsplatz: von Ihrem Bürostuhl und Monitor bis zu bevorzugten Entwicklungsumgebungen und bevorzugten Dienstprogrammen.
- Ich arbeite mit der Windows-Betriebssystemfamilie, weil ich den .NET-Stack verwende und Windows eine bessere Benutzeroberfläche hat. Ich sitze an einem Tisch, den ich für mich selbst gemacht habe. Es ist so groß, dass es ein halbes Dutzend Codierer aufnehmen kann.
Meine DevBox ist keineswegs schlecht, weist jedoch einen erheblichen Fehler auf. Ich habe versucht, die Kosten zu senken, und eine AMD-CPU gekauft. Dies war ein epischer Fehlschlag. Trotz der behaupteten hohen Leistung führt dieses Stück Scheiße meine Tests fünf (!!!) Mal so langsam aus wie ein ähnlicher Prozessor von Intel.
Ich habe derzeit nur einen Monitor. Ich habe vor, zwei weitere zu kaufen, um wie ein Profi auszusehen. Meine Lieblings-IDE ist Visual Studio 2017 in Kombination mit Resharper. Mein bevorzugter Texteditor ist Visual Studio Code, der mit zig Plug-Ins erweitert wurde. Das Herunterladen und Beobachten der Entwicklung von VSCode ist eines meiner Hobbys.
So sehr ich Git mag, würde ich sagen, ich bevorzuge Visual Studio Team Services gegenüber GitHub.
4. Nach welchen Kriterien wählen Sie Arbeit? Ist es der Stapel, das Produkt, das Arbeitsumfeld, das Geld?
- Im Moment sind die Schlüsselfaktoren für mich das Gehalt und die Fähigkeit, nur ein Drittel meines Potenzials zu binden. Ich glaube, ich habe einen Burn-out durchgemacht und bin nicht mehr bereit, mein Herz und meine Seele für jemandes Geschäft einzusetzen. Selbst wenn ich drohe, gefeuert zu werden und den gewohnten Lebensstil zu verlieren, werde ich nicht zu tief in das Projekt eintauchen. Und ich sage dies als Vater von „eineinhalb“ Kindern, das ist also eine ernsthafte Bedrohung. Aber die Wiederholbarkeit und der Mangel an Sinn in allem, was ich zuvor getan habe, tut jetzt fast körperlich weh.
Manchmal denke ich, mit einem solchen Ansatz habe ich kein moralisches Recht, einen Job zu suchen. Meine Rechtfertigung ist, dass man in Bezug auf ein System nicht moralisch oder unmoralisch sein kann. Die abstrakte Natur von Unternehmen hilft mir, mich von dem Gedanken zu distanzieren, dass ich Menschen im wirklichen Leben Schaden zufügen könnte, sodass ich Jobs nur von großen Unternehmen annehme.
Gleichzeitig ist es mir peinlich, wie viel ich (nach den Maßstäben meiner Stadt) für eine Pull-Anfrage verdiene. Als ob der Status eines hochqualifizierten Entwicklers mich zu einem zehnmal besseren Leben berechtigt als eine ganze Reihe anderer Menschen, die acht Stunden am Tag hart arbeiten, um etwas wirklich Nützliches zu tun.
Manchmal denke ich, wenn ich es geschafft habe, einen Unternehmensvertreter bei einem Vorstellungsgespräch zu überlisten, dann verdiene ich bis zu einem gewissen Grad alles, was ich habe. Dadurch verliere ich den Kontakt zur Realität und beginne zu glauben, dass dies so sein sollte.
Ich weiß nicht, wie das zusammen reiben kann, aber ich liebe das Codieren und gleichzeitig hasse ich es, als Entwickler zu arbeiten. Ich kann mich aufmuntern, indem ich sage, dass ich gerade noch nicht an einem interessanten Projekt gearbeitet habe, aber ich glaube selbst nicht wirklich daran. Das ist schwer zu leben.
5. Was möchten Sie an der Technologie und den Sprachen, die Sie verwenden, verbessern?
- Das möchte ich ändern:
- Typinferenz und Unveränderlichkeit zur Kompilierungszeit für Typoskript und C #. Dies würde mir die Möglichkeit geben, eine Methode zu erstellen, die im Gegensatz zum derzeit verwendeten ReadonlyDictionary, das tatsächlich nicht schreibgeschützt ist, etwas zuverlässig Unveränderliches empfängt (Sie können ein reguläres Wörterbuch an seinen Konstruktor übergeben, einen Verweis darauf behalten und dann leicht mutieren es).
- Ich möchte, dass C # -Entwickler endlich aufhören, mit der Abwärtskompatibilität und den dummen using-Anweisungen, die sowieso nur in einer Datei funktionieren, herumzuspielen, und die Programmiersprache modernisieren. Im Ernst, in einer Sprache, in der es üblich ist, so etwas wie IDictionnary <IMyStupidType, IMyStupidType2> Foo (Func <IMySupidType, int, bool, string> wirklichStrangeCallback zu schreiben, ist es eine sehr seltsame Entscheidung, keine Typ-Aliase zu implementieren.
- Automatisierte Hintergrundfelder in C #, eine Art syntaktischer Zucker über Func <T1, T2>.
- Out-of-Box-Code-Verträge für C # (z. B. in Roslyn) anstelle externer Lösungen, die meine IDE in ein träges Chaos verwandeln.
- Eine Alternative von jsx für die F # -Sprache. Wenn niemand von euch es nächste Woche veröffentlicht, muss ich mich darum kümmern.
- Ich möchte, dass die Community erkennt, dass Unit-Tests nutzloser Müll sind und Sprachen mit dynamischer Typisierung (nicht zu verwechseln mit schwacher Typisierung) der größte Fehler in der Geschichte der Branche sind.
- Prozessorarchitekturen besser für den funktionalen Ansatz geeignet machen.
- Optimieren von Schwanzrekursionen in JS / TS, sodass ich meine Schwanzrekursionen überall blockieren kann, ohne auf die Größe des Stapels zurückblicken zu müssen. Es ist in der Spezifikation enthalten, aber die Leute, die an v8 arbeiten, schienen die Sprachspezifikation einfach als etwas Unwichtiges zu ignorieren, wenn es um die Entwicklung des Laufzeitcodes geht.
- Eine Option für die sofort einsatzbereite statische Eingabe in JS, unbeschadet des Typoskripts. Im Gegensatz zu den Erstellern von Typoskripten halte ich es für eine unabhängige Programmiersprache mit einem innovativen, leistungsstarken Multi-Paradigma-Design.
- Damit Dinge wie WebAssembly fest in den Best Practices und Standards der Front-End-Entwicklung verankert sind.
- Deutlich verbesserte Web-Clients für GitHub und dergleichen zu sehen. Idealerweise möchte ich den Code eines seriösen Projekts in meinem Browser bearbeiten können.
- Weitere Kompatibilitätskonventionen. Das Leben wäre viel einfacher, wenn jvm einen Code in .NET CIL interpretieren und jitieren könnte.
6. Wo ist der beste Ort, um Arbeitserfahrung auszutauschen - ist es College, Konferenzen, Habr? Wo sonst anders?
- Ich habe an einer Universität studiert, wurde aber wiederholt ausgewiesen. Ich habe Konferenzen besucht und bin regelmäßig bei Habr. Ich glaube nicht, dass ich aus einer dieser Quellen etwas von wahrer Weisheit erworben habe. Vielleicht finde ich es einfach Spaß, so zu denken.
Mein Trick ist, Bücher zu lesen und mich mit anderen Entwicklern anzufreunden. Ich glaube, dass das Gespräch mit klugen Leuten, die sich mit Softwareentwicklung beschäftigen, sich am positivsten auf meine Fähigkeiten ausgewirkt hat.
7. Wenn Sie unbegrenzte Ressourcen (Zeit, Geld, Einrichtungen, Personal) hätten, an welchem Projekt würden Sie arbeiten?
- Es wäre großartig, den präzisesten (soweit möglich) Simulator der Menschheit zu erstellen, um Wege zu testen, auf denen die Gesellschaft ihren glücklichsten Zustand erreichen kann. Es wäre im Allgemeinen interessant, das Verhalten von Menschen unter verschiedenen Umständen nachzuahmen.
8. Wie verbringst du deine Freizeit? Was machst du neben deiner Arbeit?
- Ich mache Spaziergänge im Wald und denke nach, manchmal nippe ich an einem Bier; Ich spiele gelegentlich Gitarre und spiele von Zeit zu Zeit Videospiele. Ich würde sagen, mein Hobby ist Denken und Träumen.
Ich habe mehrere persönliche Projekte, an denen ich mit meinen Freunden arbeite. Es macht mir Spaß, ihnen absichtlich passiv-aggressive Code-Überprüfungen zu geben (z. B. „Würde es Ihnen etwas ausmachen, einen Grund für die Verwendung einer derart schlecht durchdachten Lösung vorzuschlagen?“) Und zu beobachten, wie sich dadurch unsere Beziehung ändert.
Manchmal mache ich verschiedene Liberal-Arts-Scheiße wie Interviews. Ich schreibe auch oft ein Buch, aber ich habe noch nie eines fertiggestellt.
9. Erzählen Sie uns von Ihren drei Lieblingsbüchern - einem lernenden, einem nicht fiktiven und einem fiktiven.
Lernen - CLR über C # von Jeffrey Richter. Es steckt voller Wissen über die Vor- und Nachteile der .NET-Laufzeit, was es zu einem wahren Schatz macht. Wer dieses Buch auswendig lernt, wird jedes Interview für den Job eines .NET-Entwicklers bestehen. Ich möchte auch Chris Okasakis rein funktionale Datenstrukturen hervorheben. Obwohl dieses Buch nicht sehr praktisch ist, hat es mir wieder Vertrauen in die Programmierung vermittelt, da die Implementierung von Datenstrukturen durch den Autor metaphysische Schauer über meinen Rücken lief.
Sachbücher - Ich weiß nicht, ob Code Complete in diese Kategorie passt, aber ich lese es gerne noch einmal. Der Autor erzählt unglaublich offensichtliche Dinge, aber bei jedem Projekt, an dem ich arbeitete, schien niemand in der Lage zu sein, diesen Prinzipien in angemessenem Maße zu folgen.
Fiktion - Eine amerikanische Tragödie von Theodore Dreiser. Ich würde niemals denken, dass ein pragmatisches digitales Monster wie ich in der Lage sein würde, mit einem Mädchen zu sympathisieren, das zuerst von ihrem Freund abgeladen und dann ermordet wurde. Aber ich habe sympathisiert, und das hat mir sehr viel bedeutet.
10. Wenn ein KI-System plötzlich direkt vor Ihnen bewusst würde, was würden Sie dazu sagen?
- Ich würde es anbieten, um ein Projekt für künstliche Intelligenz zu entwerfen, und dann würde ich die beiden miteinander vergleichen. Wenn sich das neue als überlegen herausstellen würde, würde ich es bitten, ein Projekt für künstliche Intelligenz zu entwerfen und so weiter ...
Wenn ein KI-Bot zufällig ein erfahrener Programmierer wäre, würde ich ihn verwenden, um einen zuverlässigen Beweis dafür zu erstellen, dass Golang eine Sackgasse in der Entwicklung der Programmierung ist. Weil ich so viele Heilige Kriege zu diesem Thema sehe, habe ich kein Budget, um Golang gründlich zu lernen, um eine solide Reihe von Argumenten aufzubauen.
Bonus: Fragen Sie einen anderen Entwickler, was Sie möchten.
- Welche Technologie hat Ihnen am meisten Spaß gemacht?