TJ Holowaychuk im Interview

TJ Holowaychuk ist einer der bekanntesten Entwickler für Node.js-Module. Er hat unter anderem das Webframework Express, die Testplattform Mocha und wesentliche Teile von Connect entwickelt.

In Pocket speichern vorlesen Druckansicht 1 Kommentar lesen
Lesezeit: 9 Min.
Von
  • Golo Roden

TJ Holowaychuk hat über 100 Projekte wie Express, Jade und Stylus veröffentlicht und wirkt an zahlreichen anderen wie ZeroMQ und Redis mit.

TJ Holowaychuk ist einer der bekanntesten Entwickler für Node.js-Module. Er hat unter anderem das Webframework Express, die Testplattform Mocha und wesentliche Teile von Connect entwickelt. Hier ein bereits im letzten Jahr aufgezeichnetes Gespräch.

Golo Roden: TJ, du arbeitest als Softwareentwickler für LearnBoost. Was sind dort deine Aufgaben und wie hat es dich dorthin verschlagen?

TJ Holowaychuk: Wir sind ein ziemlich kleines Team, weshalb wir bislang einen eher gemeinschaftlichen Ansatz verfolgen. Wenn wir an einem neuen Projekt arbeiten, beginnt in der Regel zunächst ein einzelner Entwickler mit der Arbeit, und wir helfen einander bei Bedarf aus. Ich und das übrige Teams sind im Prinzip damit befasst, ein fantastisches Produkt zu entwickeln, bei einzelnen Features haben wir dementsprechend auch keine "das ist dein Job"-Mentalität, sodass es mir aufgrund der guten Zusammenarbeit als kleines Team gar nicht so vorkommt, als hätten wir verschiedenen Rollen.

Golo Roden: Wann bist du zum ersten Mal auf JavaScript und Node.js gestoßen?

TJ Holowaychuk: Vor ungefähr drei oder vier Jahren habe ich Data-Mining-Software für Unternehmen in Ruby entwickelt, um die Automatisierung verschiedener Verwaltungsaufgaben für Aktien zu unterstützen. Dafür brauchte ich in Ruby große Mengen an Arbeitsprozessen, und ehrlich gesagt fand ich Ruby dafür ein wenig umständlich und relativ langsam, weshalb ich mit dem Zustand nicht zufrieden war.

Auf Node.js bin ich das erste Mal gestoßen, als ich verschiedene Ruby-Server ausprobiert habe, zunächst hatte ich Thin gefunden, und dann Ryan Dahls EBB, woraufhin ich Node.js entdeckt habe, als Ryan darüber getwittert hat. Ich habe mich der Community ziemlich früh angeschlossen, irgendwas unter den ersten 30 in #node.js auf freenode. Für meine Anwendung hatte ich Sinatra verwendet, also war mein ursprünglicher Gedanke, etwas sehr ähnliches für Node.js zu entwickeln, um mich als Ruby-Entwickler sofort heimisch zu fühlen, und mir gefiel der minimalistische Ansatz.

Früh begann ich mit der Arbeit an Express und damit, alle meine Arbeitsprozesse auf Node.js zu portieren. Mir wurde schnell klar, dass Node.js eine andere Hausnummer war, und viele frühe Versionen von Express versuchten Node.js in der heutigen Form zu abstrahieren, einfach weil Node.js sich wöchentlich änderte und ich nicht arbeiten konnte.

Golo Roden: Welche Sprachen hast du vor JavaScript benutzt?

TJ Holowaychuk: Im Wesentlichen Ruby, PHP und C, um HTML-Dokumente zu parsen.

Golo Roden: Warum hast du dich ausgerechnet auf JavaScript und Node.js spezialisiert?

TJ Holowaychuk: Zwei Aspekte von Node.js haben mich wirklich angezogen, die Tatsache, dass es auf JavaScript basiert und dass es eine vollständig neue Community war. Ich war nicht immer ein Freund von Minimalismus, und als ich Ruby kennen lernte, war ich in all die magischen Sachen verliebt, die man machen konnte, aber als dieses Gefühl verschwand, störte mich diese Magie zunehmend, und JavaScript hatte schlichtweg weniger Magie.

Was den Community-Aspekt angeht, machte es mir die Tatsache, dass die gesamte Community ein einziges IO-Modell behandelte, sehr viel leichter. In Ruby wusste ich nie, ob eine Bibliothek Thread-sicher war oder nicht, weshalb der Ansatz von Node.js, all dies bereits im Kern zu behandeln, wie ein natürlicher Fortschritt auf mich wirkte. Ich glaube nicht, dass eine Sprache oder eine Plattform "alles" anbieten sollte, denn ansonsten machen die Leute ... alles.

Golo Roden: Im Rahmen der nächsten Versionen wird JavaScript teilweise grundlegend umgestaltet, um die Belange professioneller Entwickler besser zu erfüllen. Welche Sprachfeatures würdest du in der nächsten Version von JavaScript gerne sehen?

TJ Holowaychuk: Die Bedenken, die ich bezüglich JavaScript habe, sind ziemlich gering, Sachen wie ein gekapseltes null, auf dessen Eigenschaften man ohne Weiteres zugreifen kann, könnten hilfreich sein, um einige ReferenceErrors loszuwerden. Ich freue mich auf Generatoren, vielleicht wäre auch Pattern Matching schön, wenn es richtig umgesetzt wird, und auch Weak Maps wären toll!

Golo Roden: Wenn man sich die bisherige Entwicklung von JavaScript ansieht: Gab es deiner Meinung nach Entscheidungen im Sprachdesign, die rückblickend als Fehler einzustufen sind?

TJ Holowaychuk: Ich hätte niemals Getter und Setter eingeführt, natürlich kann man sie ignorieren, aber wie ich bereits sagte, wenn man ein Feature anbietet, werden es die Leute verwenden. Ab und zu verwende ich sie sogar, allerdings nur, weil man sofort gefragt wird, wenn man etwas wie req.path() zur Verfügung stellt, warum das nicht einfach nur ein Getter ist, wie req.path. Abgesehen davon versuche ich, Mehrdeutigkeit zu vermeiden wie die Pest.

Außerdem würde ich das Konzept von .prototype und Konstruktoren streichen, mir gefällt der Ansatz von Lua, mit Prototypen umzugehen, deutlich besser, und ich denke, dass dies ein großes Verständnisproblem für Leute darstellt, die sich erstmals mit JavaScript befassen, weil es irgendwie nach einer Klasse aussieht, aber dann doch keine ist.

Golo Roden: Bezüglich Node.js als Plattform für JavaScript: Was sind deiner Meinung nach die zukünftigen Chancen und Herausforderungen für Node.js?

TJ Holowaychuk: Schwierig zu sagen, ich denke nicht, dass sich derzeit vieles verändert, im Wesentlichen sind es nur Detailverbesserungen, da die API inzwischen weitestgehend stabil ist.

Golo Roden: Node.js wird häufig als "das nächste große Ding" bezeichnet. Was hältst du davon?

TJ Holowaychuk: Ich denke, der größte Vorteil von Node.js ist, dass es in einer derart weit verbreiteten Sprache geschrieben wird und dass es nur eine einzige Art der Nebenläufigkeit zur Verfügung stellt. Das ist nicht wirklich "neu", der Teil, den ich eher als neu ansehe, ist die Art, wie dies erreicht wird, also die Technologie dahinter. Die Tatsache, dass Node.js von Anfang an wohldefiniert war, bietet der Community ein großartiges Fundament, auf dem man aufbauen kann, und das lässt sich schwerlich über viele Plattformen sagen.

Golo Roden: Du hast eine beeindruckende Vielzahl von verbreiteten und häufig verwendeten Frameworks wie Express, Jade, Stylus und Mocha entwickelt. Woher beziehst du deine Inspiration und deine Ideen?

TJ Holowaychuk: Ich vermute, das ist jeweils unterschiedlich. Express war offensichtlich von Sinatra abgeleitet, hat sich aber später in seine eigene Richtung entwickelt. Jade war (meiner Meinung nach) eine Verbesserung gegenüber Rubys HAML, Stylus ist im Wesentlichen wie SASS, aber ich wollte CSS weiterhin mit der gängigen Syntax schreiben können, und Mocha schließlich war eine Neuauflage meines frühesten Projekts in JavaScript, JSpec. Ich glaube nicht, dass man jemals einen Punkt erreicht, an dem Software "fertig"ist, sie ist niemals sauber, robust, "rein" genug. Daher glaube ich, dass man eine Menge natürlichen Fortschritts erleben wird, auch mit Node.js, nicht weil das Konzept von asynchronem IO neu gewesen wäre, sondern es wurde vorher schlichtweg nicht in dieser Form zur Verfügung gestellt, weshalb meine Arbeit und die von ziemlich jedem anderen eher aus einer Reihe kleiner Verbesserungen als aus grundlegenden Erfindungen besteht.

Was die Inspiration betrifft ist ein Antrieb durch die Programmierwelt für mich, einfach niemals zufrieden zu sein, weder mit meinen eigenen Fähigkeiten noch mit der Art, wie Dinge erledigt werden. Das Ergebnis ist nicht notwendigerweise immer gut, ich habe viele konzeptuell interessante, aber gescheiterte Projekte, aber welchen Spaß macht Programmieren, wenn man nicht experimentiert!

Golo Roden: Einige Frameworks hast du mehrfach entwickelt, beispielsweise Expresso und Mocha. Von außen wirkt das wie wegwerfen und vollständig neu machen. Warum hast du nicht stattdessen das bereits Vorhandene weiterentwickelt?

TJ Holowaychuk: Als ich Expresso geschrieben habe, gab es kaum Testframeworks für Node.js, und ich brauchte eines für Connect und Express. Expresso war zugegebenermaßen nur schnell zusammengeschustert, weshalb ich im Hintergrund in einem privaten Repository nach und nach an Mocha gearbeitet habe, bis es brauchbar war.

Golo Roden: Wie entwickelst du? Fängst du einfach an, Code zu schreiben, oder strukturierst du dein Vorgehen?

TJ Holowaychuk: Ich plane fast nie, ich kann nur für mich sprechen, aber ich glaube nicht, dass dieser Ansatz besonders gut funktioniert. Ich setze mich lieber hin, entwickle einen Prototypen und arbeite dann Muster aus diesem heraus. Ich werfe diesen Code häufig weg und beginne dann mit der eigentlichen Implementierung.

Golo Roden: Wenn man beginnt, sich mit Node.js zu befassen, besteht eine der größten Herausforderungen darin, zunächst einen Überblick über das Ökosystem zu gewinnen. Was würdest du einem Anfänger raten?

TJ Holowaychuk: Es ist bedeutend schwieriger geworden, weil wir inzwischen aus Tausenden von Modulen wählen können. Das macht es für Neueinsteiger schwierig, aber schon ein einziger Tag, an dem man die Liste der Module im Wiki von Node.js durchgeht, hilft enorm.

Golo Roden: Worauf darf man bei dir als nächstes gespannt sein?

TJ Holowaychuk: Mehr Code.

Golo Roden: TJ, vielen Dank, dass du dir die Zeit für dieses Interview genommen hast. ()