Design Patterns, Tools und Co.: Im Gespräch mit Erich Gamma

Erich Gamma ist als Mitbegründer der Gang of Four Teil der bekanntesten Bande im Reich der Informatik. Mittlerweile ist er bei Microsoft untergekommen, und statt Java steht nun JavaScript auf seiner Tagesordnung. Ein Wechsel, der ab und an für leichte Wehmut sorgt.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 13 Min.
Von
  • Julia Schmidt
Inhaltsverzeichnis

Erich Gamma ist als Mitbegründer der Gang of Four Teil der bekanntesten Bande im Reich der Informatik. Mittlerweile ist er bei Microsoft untergekommen, und statt Java steht nun JavaScript auf seiner Tagesordnung. Ein Wechsel, der ab und an für leichte Wehmut sorgt.

heise Developer: Vor vier Jahren bist du von IBM zu Microsoft gewechselt und seither war es eher ruhig um dich. Was hast du in der Zeit getrieben?

Erich Gamma: Ich habe eine neue Herausforderung gesucht und wollte etwas Anderes machen, deshalb der Wechsel. Die Herausforderung war, eine Antwort auf die Frage zu finden, was man mit Online-Coding alles anstellen kann. Also wie weit kann man mit Programmierung im Browser gehen, was ist möglich und wie kann man Werkzeuge weiterbringen, wenn man den Browser einbezieht.

Ergebnis der Arbeit sind unterschiedliche Komponenten, die in verschiedenen Produkten untergekommen sind. Zum Beispiel ist ein Code-Editor entstanden, der im Browser läuft und in diversen Microsoft-Projekten wie OneDrive und im Azure Portal zum Einsatz kommt. Mit Visual Studio Online "Monaco" können Azure Websites im Browser bearbeitet werden. Das neueste Projekt – Visual Studio Code – setzt auf dieselbe Technik, läuft aber auf dem Desktop als eigenständige Anwendung.

Zurückblickend waren mein Team und ich vier Jahre lang eine Art Start-up-Unternehmen innerhalb von Microsoft, das versucht hat, mithilfe des Browsers die Arbeit von Entwicklern zu erleichtern.

heise Developer: Visual Studio Code wurde Ende April auf Microsofts Build-Konferenz vorgestellt. Kannst du dazu noch ein bisschen mehr erzählen, wo du doch an der Entwicklung beteiligt warst?

Mehr Infos

Zur Person: Erich Gamma

Erich Gamma ist 1961 in Zürich geboren und wurde als einer der Autoren des Buchs "Design Patterns – Elements of Reusable Object-Oriented Software" bekannt, dass erstmals 1994 erschien. Gamma implementierte gemeinsam mit Kent Beck das Test-Tool JUnit, war einer der Miterfinder der Entwicklungsumgebung Eclipse und in der IBM Software Group als Distinguished Engineer tätig. Heute ist er Distinguished Engineer bei Microsoft und leitet ein Entwicklerteam, das unter anderem für den Editor Visual Studio Code verantwortlich zeichnet. Erich Gamma ist – zusammen mit seinen Mitautoren – Träger des Dahl-Nygaard-Preises und erhielt zudem unter anderem den ACM Software System Award für Eclipse.

Erich Gamma: Die Idee hinter dem Editor war es, ein Werkzeug für mehrere Plattformen anbieten zu können. Microsoft möchte die Cross-Plattform-Entwicklung vorantreiben, wie auch die Ankündigung von .NET als Cross-Plattform-Angebot aus dem letzten November zeigt. Wenn man so etwas ankündigt, braucht man auch Tools, die über die verschiedenen Plattformen hinweg funktionieren.

Mit Visual Studio Code wollten wir ein einfaches Tool für Webentwickler bauen, das aber wichtige Funktionen wie IntelliSense und entsprechende Debugging-Möglichkeiten enthält. Das Tool sollte sich eher wie ein Editor verhalten und keine vollständige Entwicklungsumgebung werden.

Visual Studio Code ist hauptsächlich in TypeScript und mit HTML5 implementiert. Für die Integration in den Desktop verwenden wir Electron, ein von GitHub entwickeltes Projekt.

Interessant ist auch, dass Visual Studio Code eine Tools-Service-Architektur verwendet, die es erlaubt, Dienste wie die Unterstützung von C# in verschiedenen Tools einzusetzen. Dazu arbeitet mein Team auch in Open-Source-Projekten an solchen Services mit. Ein Beispiel dafür ist das OmniSharp-Projekt.

heise Developer: Wenn man sich deine Vergangenheit ansieht, hast du durch die Mitarbeit an Projekten wie Eclipse allerdings viel Erfahrung mit IDEs. Warum das nicht nutzen?

Erich Gamma: Ich liebe Eclipse natürlich immer noch, aber IDEs haben den Anspruch, viele Funktionen zu integrieren. Dadurch werden sie mit der Zeit immer schwergewichtiger und damit auch langsamer. Auf der anderen Seite gibt es Editoren, die auf Geschwindigkeit und für die effiziente Benutzung mit der Tastatur ausgelegt sind. Editoren und IDEs haben ihren Platz. Ein Editor hat auch nicht den Anspruch, alle Techniken zu integrieren. Es ist ok, sie über die Kommandozeile zu nutzen. Mit Visual Studio Code versuchen wir die Leichtgewichtigkeit eines Editors zu bewahren, aber auch Kernfunktionen, die man aus IDEs kennt und liebt, wie IntelliSense, Navigieren im Code, Refactorings und Debugging zu integrieren.

heise Developer: Gibt es da Unterschiede zu den Java-Entwicklern aus deinen Eclipse-Tagen?

Erich Gamma: Java-Entwickler leben quasi immer in ihrer IDE und der Workflow ist von der IDE vorgegeben und es geht ihnen gut so. Viele Webentwickler bevorzugen aber einen Editor, weil er schneller ist und per Kommandozeile mit anderen Tools dieser Szene, Grunt oder Gulp etwa, gemeinsam genutzt werden kann. Solche eher offenen Workflows wollen wir mit Visual Studio Code unterstützen. Auf diese Art kann eine neue Technologie sofort benutzt werden und man muss nicht warten, bis sie in die IDE integriert ist.

heise Developer: Habt ihr euren Editor ab einem gewissen Punkt auch für dessen Weiterentwicklung benutzt?

Erich Gamma: Wir haben etwa vor vier Jahren mit dem Projekt angefangen, aber bereits nach vier Monaten habe wir nur noch mit unserem Tool gearbeitet. Obwohl es am Anfang viele Limitierungen hatte. Zum Beispiel hatten wir am Anfang keine Unterstützung fuer die Maus. Wir betreiben "eat your own dog food" ganz bewusst aggressiv. Dies hilft uns nicht nur bei der Qualität, sondern es entstehen dabei auch immer wieder gute Ideen, die man dann ausprobieren möchte.

heise Developer: Gibt es im Entwicklungsprozess trotzdem Momente, in denen du auf Visual Studio zurückgreifst?

Erich Gamma: Durchaus, durch die Tools-Service-Architektur ist es möglich, Services in anderen Sprachen als TypeScript oder JavaScript zu schreiben. So ist zum Beispiel die Unterstützung von C# in C# implementiert. Visual Studio hat einen guten C#-Debugger, der auch das sogenannte Async Debugging beherrscht. Das kann Visual Studio Code noch nicht, deshalb kommt an der Stelle Visual Studio zum Einsatz. Ich schätze aber, dass mein Team mehr als 90 Prozent der Zeit in Visual Studio Code verbringt.