Bist Du gut genug für Scala?

Hartmut Schlosser

Ausgerechnet Scala Champion, Buchautor und bekennender Scala-Lover David Pollak schreibt auf seinem Blog: Ja, Scala ist schwer! Obwohl Scala gegenüber Java viele Dinge radikal vereinfache, beispielsweise den Umgang mit Collections oder die Isolation der Business-Logik, bringe die Einführung von Scala in ein Unternehmen seiner Erfahrung nach nicht immer Produktivitätsgewinne mit sich.

Scala könne sich in Projekten gar als Filter erweisen, um kluge Köpfe von Durchschnittshackern zu trennen. Projekt-Managern, die mit Scala liebäugeln, gibt Pollak einige Faustregeln an die Hand:

Die Einführung von Scala wird einfach, wenn:

  • dein Unternehmen Sprecher an einschlägige Java-Konferenzen aussendet
  • deine Entwickler Code notfalls auch mit NotePad schreiben können
  • deine Entwickler Dean Wampler auf Twitter folgen

Schwierig wird es hingegen, wenn:

  • das Entwicklerteam sich am Mittagstisch ständig darüber unterhält, welche Kriterien bestehen, um vom Developer zum Senior Developer aufzusteigen
  • die Entwickler unwissend ins Leere schauen, wenn sie den Namen Zed Shaw hören
  • die Entwickler um 9:15 ins Unternehmen kommen, vor 18:00 Uhr nach Hause gehen und danach keine E-Mails mehr checken

Was sich anhört wie Scala-Bashing hat einen ernsten Hintergrund. Pollak ist sicherlich ein Scala-Kenner, der die Vorteile der Sprache zu schätzen weiß und dem eine größere Verbreitung von Scala durchaus am Herzen liegt. Umso genauer sollte man sich seine sachlichen Kritikpunkte anhören:

  • Scala versucht laut Pollak, zu viele Dinge gleichzeitig zu können, sowohl funktional als auch objektorientiert zu sein. Dank Objektorientierung lasse sich in Scala zwar wie in Java programmieren, die meisten Vorteile von Scala manifestieren sich laut Pollak indes auf der Seite der funktionalen Programmierung. Die große Auswahl der Mittel führe zu einer Freiheit, mit der nicht alle umzugehen wüssten.
  • The overwhelming advantages of Scala really manifest themselves when you’re coding mostly FP, but it’s nearly impossible to get OO developers there unless they really want to get there. In this case, less language features/choices (like Java or Ruby) is easier. It makes for less choices. David Pollak

  • Der IDE Support ist schwach und – was gravierender ist – wird es immer bleiben. Grund dafür ist vor allem die Diversität der möglichen Scala Patterns und Templates. Eine Pattern-Unterstützung wie von Java IDEs gewöhnt kann es deshalb für Scala nicht geben, die nötigen Entwicklungsressourcen für einen solchen IDE-Support wären immens.
  • If you’re expecting the hand-holding that you get with Java IDEs, it isn’t there and never will be because encompassing Scala’s power with simple paradigms is difficult and requires tons of resources that even TypeSafe with 3M in the bank cannot underwrite. David Pollak

  • Das Scala-Typensystem ist zwar enorm mächtig, für viele Durchschnittsaufgaben aber zu komplex.
  • The type system and associated documentation needs a simpler mode that hides the features that trade power and complexity at the library level for simplicity at the end user level. David Pollak

  • Um Scala-Programme warten zu können, müssen jüngere Entwickler die Pattern und persönlichen Idiome kennen, die die ursprünglichen Programmierer verwendet haben.
  • While Scala makes putting business logic at the forefront of the code (rather than distributed through a bunch of for loops and complex if statements), depending on the idioms used, decoding that logic is non-obvious. David Pollak

Pollak nimmt deshalb einen Meinungswechsel vor: Hatte er früher immer die Position vertreten, Scala sei einfach, stimmt er nun der Aussage zu, dass das Erlernen von Scala für ein durchschnittliches Entwicklerteam hart sei.

If you’re a center-of-the-mean (COTM) company, then Scala costs you in terms of learning curve, existing developer rejection, lack of patterns. You’ll need a strong CTO or architect to enforce the patterns rather than getting them from books and the IDE and the number of COTM companies with strong CTOs or Architects is, well, „limited“. David Pollak

Welche Lösungen gibt es für die angesprochenen Probleme? Den Anfang könne man laut Pollak damit machen, die ScalaDocs zu verbessern, um eine „einfache“ View und eine „Architektur“ View zu ermöglichen. Dies sei aber erst ein Startpunkt, wie geht es weiter…?

Geschrieben von
Hartmut Schlosser
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.