„Rust muss nicht vollkommen sein, solange wir etwas Nützliches liefern“
Vorwort
Steve Klabnik ist Mitglied des Kernteams von Rust, aktiver Open-Source-Mitarbeiter und Autor der Bücher The Rust Programming Language, Rails 4 in Action und Designing Hypermedia APIs. In den Jahren 2012 und 2016 haben wir Steve eingeladen, auf der RailsClub-Konferenz (jetzt RubyRussia) zu sprechen. Seitdem hat Steve viel an Rust und anderen interessanten Dingen gearbeitet, und daher war uns klar, dass wir ihn unbedingt noch einmal interviewen sollten!
Wir haben uns mit Steve zusammengesetzt, um von ihm aus erster Hand über seine derzeitigen beruflichen Aktivitäten, den Design-Erfolg von Rust, den „Full-Stack“-Entwicklungshype und das Vermeiden von Burnouts zu erfahren.
Das Interview
Evrone: Was machen Sie neben Ihren Open Source-Projekten derzeit beruflich?
Steve: Ich arbeite bei Oxide Computer Company und schreibe eine Menge Rust-Code!
Evrone: Gibt es neben Ruby und Rust noch andere Technologien, die Sie interessant finden?
Steve: Rust ist momentan mein Fokus, aber ich finde den Aufstieg von „Headless CMS“ und JAMStack ziemlich interessant.
Evrone: Sie haben viel Zeit damit verbracht, nach Theoretikern zu suchen, um eine erstklassige Dokumentation für Rust-Entwickler zu erstellen. Wenn Sie auf die Sprachentwicklung zurückblicken, was ist Ihrer Meinung nach der wichtigste Designerfolg, der am meisten zur Popularität der Sprache beigetragen hat?
Steve: Das Wichtigste war, nützlich sein zu wollen. Wir haben versucht, so vertraut wie möglich zu sein, damit die wenigen neuen Ideen in den Mittelpunkt gestellt werden konnten. Rust muss nicht vollkommen sein, solange wir etwas Nützliches liefern.
Evrone: Was ist Ihr Lieblings-Software-Toolset für das tägliche Arbeiten?
Steve: Ich verwende Visual Studio Code mit dem Vim-Plugin.
Evrone: Wie sieht Ihrer Meinung nach eine gute Ausbildung für einen Softwareentwickler aus? Sollte man Informatik studieren, um Programmierer zu werden? Oder wäre es besser, als „Software-Autor“ Code zu schreiben, so wie DHH es beschreibt?
Steve: Ich habe einen offiziellen Abschluss, aber das Meiste habe ich mir abseits davon beigebracht. Er ist nützlich für mich, aber ich kenne viele Leute, die ausgezeichnete Programmierer sind und keine formelle Ausbildung hatten.
Evrone: Yukihiro Matsumoto hat in der Vergangenheit erwähnt: „Indem man sich für eine Sprache entscheidet, entscheidet man sich auch für die Projekte, an denen man täglich arbeitet, und auch wie man daran arbeitet“. Welche Art von Projekten und Arbeitskultur erwarten Rust-Entwickler hauptsächlich?
Steve: Viele Rust-Jobs befinden sich in der Infrastruktur, d. h. in Betriebssystemen, Webservern, DevOps-Tools, Datenbanken und eingebetteten Geräten. Es gibt auch einige Webanwendungen, und das hat in letzter Zeit stark zugenommen.
Evrone: Die neue „async/await“-Syntax und die dazugehörigen Konzepte wurden kürzlich in Rust sowie in anderen Sprachen eingeführt. Was können Sie uns als jemand, der Sprachdokumentationen schreibt und den Leuten beibringt, sie zu benutzen, über die Lernkurve und das Feedback der Entwickler zu diesen neuen Funktionen sagen?
Steve: Rust hat den Ruf, schwer zu erlernen zu sein, und das liegt zum Teil daran, dass viele andere Sprachen als Inspiration dienen. Wenn man also noch keine der Sprachen ausprobiert hat, die als Inspiration gedient haben, kann es unter Umständen etwas komplizierter sein. Dinge, mit denen man in der Vergangenheit schon einmal zu tun hatte, können dagegen viel einfacher sein. Es hängt also immer von der Erfahrung des Programmierers ab! Ein JavaScript-Programmierer könnte sich denken: „Ach async/await, kein Problem, cool“, ein C-Programmierer im Gegensatz dazu: „Was ist das?“ Bei Zeigern wiederum hat der C-Programmierer keine Schwierigkeiten, der JavaScript-Entwickler jedoch vielleicht schon!
Evrone: Glauben Sie, dass es eine „natürliche Affinität“ zur Softwareentwicklung gibt, wie wir sie zum Spielen von Musikinstrumenten oder zum Zeichnen haben?
Steve: Vielleicht. Selbst wenn ja, denke ich nicht, dass man so eine Affinität braucht, um ein guter Programmierer zu sein. So etwas mag es einfacher machen, ist aber nicht notwendig.
Evrone: Welche Konkurrenz sehen Sie derzeit für die Programmiersprache Rust und in welchem Bereich?
Steve: Die eigentliche Herausforderung im Moment sind die Arbeitsplätze. Es gibt mehr Rust-Jobs, als man erwarten würde, aber es ist nicht besonders einfach, einen zu bekommen, weil es dafür nach wie vor zu wenige sind. Das ändert sich zwar fortlaufend, aber wir sind noch nicht an diesem Punkt angekommen.
Evrone: Die Typisierungslandschaft moderner Sprachen reicht von der „dynamischen Typisierung“ bis zur „statischen Typisierung“ mit vielen Varianten wie einem neuen „graduellen Typisierungs“-Ansatz. Was ist Ihrer Meinung nach die größte Herausforderung im Bezug auf Typen? Warum haben wir keine „beste“ Strategie, die von den meisten Programmiersprachen verwendet werden kann?
Steve: Nicht alle Typsysteme sind gleich. Es gibt viele verschiedene Arten von Typsystemen, und manche sind für einige Dinge besser als andere. Außerdem gibt es natürlich auch persönliche Vorlieben. Ich kenne einige Programmierer, die niemals eine dynamisch typisierte Sprache verwenden würden. Obwohl ich statisch typisierte Sprachen bevorzuge, könnte ich eine dynamisch typisierte Sprache einer Sprache mit einem schwächeren statischen Typsystem vorziehen.
Evrone: Es gibt viel Burnouts unter Open-Source-Entwicklern, ganz zu schweigen von Ereignissen wie der jüngsten actix-web-Konfrontation. Was hilft Ihnen, eine Work-Life-Balance zu halten und Burnouts zu vermeiden?
Steve: Ich denke nicht, dass ich sonderlich gut darin bin, eine Balance zu halten. So etwas ist nicht gerade einfach. Ich mache Phasen durch, in denen ich viel arbeite, und dann Phasen, in denen ich nichts tue.
Evrone: Der neue „Full-Stack“-Hype erfordert, dass Entwickler eine Reihe verschiedener Sprachen und Stacks lernen. Halten Sie es, als Experte unterschiedlicher Ökosystemen wie Ruby und Rust, für eine gute Idee, dass Entwickler viele verschiedene Dinge in ihre tägliche Arbeit einfließen lassen?
Steve: Neue Technologien zu lernen ist immer toll, und wenn man die Zeit und die Möglichkeiten hat, sich Neues anzueignen, sollte man meiner Meinung nach diese Gelegenheiten jederzeit nutzen.
Evrone: Können wir das Fachwissen von Software-Entwicklern anhand der Jahre einschätzen, die sie bereits programmieren?
Steve: Das glaube ich nicht. Manchmal ist Erfahrung hilfreich, aber man kann auch leicht in alten Mustern steckenbleiben.
Evrone: Glauben Sie, dass WebAssembly in Zukunft in der Lage sein wird, JavaScript als beliebteste Frontend-Plattform zu ersetzen, oder wird die „Sandbox“-Architektur sie für immer auf die Nische der „Hochleistungs-Plugins“ beschränken?
Steve: Ich denke nicht, dass es wirklich versucht, JavaScript zu ersetzen. Im Gegenteil, es will JavaScript sogar erweitern. Meiner Meinung nach werden wir noch viel mehr von Wasm sehen, aber JS wird nicht einfach so verschwinden.
Evrone: Im Netz wird heiß über „Monolith vs. Microservices“-Architekturen diskutiert, wobei einige große Unternehmen ihre Monolithen in Microservices aufspalten, während andere Microservices wieder zu glorreichen Monolithen zusammenbauen. Es ist aktuell sogar noch komplizierter, da alle großen Cloud-Plattformen mit „Function as a Service“ arbeiten. Haben Sie ein paar Tipps für Entwickler, wie sie eine vernünftige Wahl bezüglich ihrer Projekte treffen können?
Steve: Ich denke, das hängt von den Fähigkeiten des eigenen Teams ab. Einige Teams bevorzugen eine große Codebasis, andere bevorzugen viele kleine. Meine Erachtens können all diese Methoden gut funktionieren aber auch genau so scheitern.
Evrone: Wie wählt man als durchschnittlicher Entwickler zwischen „SemVer“ und „CalVer“?
Steve: Ich persönlich bevorzuge SemVer, aber ich bin ziemlich voreingenommen :)
Evrone: Ist es für Open Source sinnvoll, wenn Unternehmen Vollzeitkräfte einstellen? Oder sollten wir Dienste wie GitHub-Sponsoring, Patreon usw. nutzen, um Open-Source-Betreuer und Mitwirkende finanziell zu unterstützen?
Steve: Ich finde es großartig, wenn Unternehmen Vollzeitkräfte einstellen. Jeder muss seine Miete und sein Essen bezahlen. Wenn das Geld von Organisationen bzw. Unternehmen kommt, die Geld verdienen, ist das oft viel besser als Spenden anderer Entwickler.
Werfen Sie einen Blick auf den Bericht von Steve Klabnik mit dem Titel „Exploring Ruby through Rust“ im RailsClub (RubyRussia) von 2016:
Wir schätzen unsere Freundschaft mit Steve sehr. Er inspiriert uns dazu, Ruby & Rust in einer Vielzahl von Projekten einzusetzen. Kontaktieren Sie uns, wenn Sie Hilfe bei der Entwicklung einer herausragenden Software benötigen, und wir helfen Ihnen gerne weiter!