Design Patterns, Tools und Co.: Im Gespräch mit Erich Gamma
Seite 2: Organisation, JavaScript und Open Source
Prozesse weniger hoch aufhängen
heise Developer: Wie bereits anklang, bist du einer der Erfinder von Eclipse. Als du noch fĂĽr die IDE unterwegs warst, hast du gern ĂĽber den Eclipse Way geredet, also auch, wie man ĂĽber das Jahr hinweg an dem Projekt arbeitete. Finden sich immer noch Herangehensweisen aus dieser Zeit in deinen Arbeiten?
Erich Gamma: Wir machen immer noch gewisse Dinge ähnlich. Es gibt beispielsweise auch jetzt noch vier Wochen dauernde Sprints oder Iterationen. Am Ende der Iteration produzieren wir ein "New & Noteworthy"-Dokument mit den neuen Funktionen. Dafür praktizieren wir jetzt Daily Standups, was wir bei der Arbeit an Eclipse nur wöchentlich gemacht haben. Es war uns von Anfang an wichtig, möglichst leichtgewichtige Vorgehen zu verwenden. Das fing alles nur mit Klebezetteln an einem Whiteboard an.
Unser Team ist langsam und kontinuierlich gewachsen. Heute braucht es daher etwas mehr Tools, weil wir ĂĽber die Standorte Redmond und ZĂĽrich verteilt sind. Dazu verwenden wir einen Teil der Planungs-Tools von Visual Studio Online.
heise Developer: Gibt es denn viel Interaktion mit anderen Entwicklerteams bei Microsoft?
Erich Gamma: Als Start-up-Unternehmen innerhalb von Microsoft sind solche Interaktionen natĂĽrlich lebensnotwendig, sonst wird unsere Technologie ja nicht in anderen Produkten eingesetzt. In Microsoft verwendet man fĂĽr diese gemeinsame Zusammenarbeit den Begriff Partnering. Beziehungen mĂĽssen aktiv gepflegt werden und eine wichtige Rolle dabei spielt der sogenannte Program Manager. Seine Aufgabe ist es, eine BrĂĽcke zwischen Nutzern und Entwicklerteam zu schlagen. Unser Program Manager sitzt deshalb zum Beispiel in Redmond und nicht bei uns in ZĂĽrich.
Lingua franca der Cross-Plattform-Entwicklung
heise Developer: Du hattest schon mit C++ und C zu tun, in deinem Buch zu Design Patterns kommen auch Beispiele aus Smalltalk vor, du hast viele Jahre mit Java zu tun gehabt und nun bist du bei JavaScript angekommen. Wie kam es zu der letzten Umstellung?
Erich Gamma: Der Verbreitung von JavaScript kann man schlicht nicht ausweichen. JavaScript kommt heute nicht mehr nur im Browser, sondern auch auf dem Server und fĂĽr das Erstellen von Cross-Plattform-Tools zum Einsatz. JavaScript ĂĽbernimmt so die Rolle von Java, wenn es um Cross-Plattform-Entwicklung geht.
Am meisten vermisst habe ich bei der Umstellung die Tools. Mit der Unterstützung von Refactoring, Quick Fixes und so weiter kann Code sehr einfach umgebaut oder verbessert werden. Eine Methode in JavaScript umzubenennen ist nicht trivial und es braucht eine gute Testabdeckung oder schlicht Mut dazu. Da der JavaScript-Code nicht einfach geändert und umstrukturiert werden kann, besteht die Gefahr, dass der zu faulen beginnt.
Hier hilft natürlich TypeScript. Die Einführung von optionalen Typen ermöglicht die Entwicklung von intelligenten Tools. Mein Team war übrigens der erste Partner vom TypeScript-Team. Sobald wir in unserem Projekt mehr als 100.000 Zeilen geschrieben hatten, haben wir uns entschlossen, den Code von JavaScript auf TypeScript umzuschreiben. Eine Entscheidung, die wir bisher nicht bereut haben – das finden sogar die hart gesottenen JavaScript-Entwickler in meinem Team.
heise Developer: WĂĽrdest du also TypeScript JavaScript in groĂźen Projekten den Vorzug geben?
Erich Gamma: Ja, das wäre meine Empfehlung. Am Anfang, als TypeScript verfügbar wurde, gab es praktisch nur in Visual Studio eine gute Tool-Unterstützung dafür. Das hat sich mittlerweile geändert. Es gibt TypeScript-Erweiterungen für die meisten Editoren und IDEs. Aber auch Visual Studio Code eignet sich, da es aus etwa 300.000 Zeilen TypeScript-Code besteht. Sie wurden ausschließlich mit dem Editor selbst entwickelt, weshalb die Unterstützung der Sprache gut ausgereift ist.
heise Developer: Nachdem du jetzt einige Jahre mit JavaScript verbracht hast und dich vorher so ausführlich mit Design Patterns beschäftigt hast, gibt es Dinge, die dir in der Sprache besonders auffallen, was Muster angeht?
Erich Gamma: JavaScript war ursprünglich nicht für grössere Applikationen entwickelt worden. Es fehlten Konstrukte für Module, Klassen oder die asynchrone Programmierung mit Callbacks. Muster haben diesen Mangel teilweise kompensiert. Mit ECMAScript 6 beziehungsweise ECMAScript 2015 sind diese Unzulänglichkeiten endlich behoben und die Konstrukte stehen zur Verfügung.
Interessant ist auch die Mustersuche in JavaScript-Bibliotheken und -Frameworks. Interessanterweise findet man dort Muster, die man auch von Java her kennt. Zum Beispiel trifft man in Angular auf Dependency Injection und Data Binding. Knockout setzt auf das Model-View-ViewModel-Muster und so weiter. Das zeigt, dass viele Muster sprachunabhängig sind. Wenn ich nicht bereits ein Buch zum Thema geschrieben hätte und wüsste, wie viel Arbeit damit verbunden ist, fände ich es wirklich spannend, über all die Muster zu schreiben, die in JavaScript vorkommen.
Der nicht ganz so einfache Umgang mit Open Source
heise Developer: Wie sieht es in eurem Projekt mit der Verwendung von Open Source aus?
Erich Gamma: In den vier Jahren bei Microsoft hat sich bezüglich des Einsatzes von Open-Source-Projekten extrem viel verändert. Microsoft setzt jetzt nicht nur Open Source ein, sondern arbeitet auch maßgeblich an quelloffenen Projekten mit oder entwickelt Projekte gleich als Open Source. In unserem Projekt verwenden wir zum Beispiel eine Vielzahl von Node.js-Modulen und Electron von GitHub. Allerdings sind wir auch an den Open-Source-Projekten für OmniSharp und TypeScript aktiv beteiligt.
Wie man OpenSource am besten in einem Unternehmen wie Microsoft einsetzt, ist aber immer noch nicht trivial. Es braucht ein Inventar der verwendeten Komponenten und deren Versionen, die sich laufend ändern. Dazu müssen auch Auflagen der Lizenzen wie GPL honoriert werden. Das ist bereits anspruchsvoll, wenn man einmal pro Jahr eine neue Version ausliefert. Für Visual Studio Code machen wir aber alle vier Wochen eine neue Version und müssen diesen Anforderungen trotzdem gerecht werden.
heise Developer: Sei es Eclipse, JUnit, Rational TeamConcert oder VS Code: Betrachtet man deine Karriere, hast du eigentlich ziemlich durchgängig immer an Hilfsmitteln für Entwickler gearbeitet. Was motiviert dich dabei besonders?
Erich Gamma: Als Programmierer verbringt man sehr viel Zeit mit oder in Tools. Wenn ich jetzt die Tools baue mit denen ich viel Zeit verbringe, dann lebt man quasi in dem, was man selbst baut. Das macht Spaß. Außerdem gibt einem das "Eat your own dog food"-Prinzip laufend Feedback und Ideen, wie man die Tools verbessern könnte. Schließlich ist auch die Zusammenarbeit mit Entwicklern, die ein Tool verwenden, spannend. Man kriegt immer viel Fan-Post als Bug Reports, Verbesserungsvorschlag oder einfach Kommentare via Twitter. Ich liebe die Tool-Entwicklung einfach immer noch.
heise Developer: Vielen Dank, dass du dir die Zeit fĂĽr das Interview genommen hast.
Das Interview führten Julia Schmidt und Alexander Neumann, Redakteure bei heise Developer, während der Enterprise-JavaScript-Konferenz enterJS. (jul)