Freitag,
21. Oktober 2011

jQuery hat zweifelsfrei für viele Anwender und vor einigen Jahren auch für mich den Weg zum Verständnis von DOM Scripting und JavaScript geebnet. Insofern ist es wenig verwunderlich, dass mehr und mehr Lehrmaterial für jQuery auf den Markt kommt, welches sich gezielt an Einsteiger richtet und mit schnellen Ergebnissen begeistern will.

Das neueste Projekt in dieser Hinsicht ist ein sechsstündiger jQuery Video-Workshop von Gerrit van Aaken, der seit ein paar Tagen bei Undsoversity zum Kauf bereit steht und sich ausdrücklich an Einsteiger richtet. Um sich vor dem Kauf einen Eindruck vom Gebotenen verschaffen zu können, stehen insgesamt drei Kapitel (Events und EventListener, Inline-Bildergalerie und ein interaktiver HTML5-Videoplayer) mit einer Gesamtlänge von fast 2 Stunden (fast 1/3 der Gesamtlänge) kostenfrei auf YouTube bereit.

Aufgebaut sind die einzelnen Themenblöcke als Live-Coding Sessions in denen zu Beginn eine Aufgabe vorgestellt wird, die im Anschluss als “Blick über die Schulter” des Tutors mit HTML, CSS und eben jQuery (Anm: JavaScript sage ich hier bewusst nicht, denn JavaScript scheint kaum thematisiert zu werden) gelöst werden. Die Art und Weise der Präsentation finde ich von Konzept her gelungen und besonders interessant für Autodidakten (wie mich), die lieber durch Probieren als durch dumpfes Lesen neue Dinge lernen. Der Zuschauer kann die schrittweise Entwicklung des Programmcodes anhand konkreter Aufgabenstellungen miterleben und so dessen Logik sehr viel einfacher nachvollziehen, als beispielsweise aus einem spärlich kommentiertem, 2-seitigen Abdruck eines fertigen Quelltextes in einem Buch.

Weniger gut gelungen ist die Umsetzung dieses Konzepts. Das Live-Coding ist eine hohe Kunst und offenbart immer dann seine Tücken, wenn der Tutor nicht auf den Punkt vorbereitet ist. Ein bewusst eingebauter Logikfehler im Code zum Zwecke der Demonstration des Debuggings oder eines wichtigen logischen Schritts, ist sicherlich sinnvoll und lässt den Workshop authentisch und “lehrreich” wirken. Zuviele kleine Korrekturschleifen in zu kurzer Abfolge (speziell im Video-Kapitel) wirken hingegen mit der Zeit eher störend. Beim Herauskopieren von Code-Schnipseln aus anderen Webseiten rinnen die Minuten der erkauften Zeit sehr viel schneller als man denkt. In einem kostenlosen Screencast, ist sowas kein Problem. In einem kostenpflichtigen Lernvideo wünsche man sich dann doch ein etwas zielgerichtetes Arbeiten und Erklärungen mit mehr Tiefgang anstatt reinem copy/paste (Stichwort: Mediaelement.js).

Gerrits Workshop richtet sich an Einsteiger ohne JavaScript-Kenntnisse. Der Einstieg erscheint auch butterweich, allerdings hätte ich mir gewünscht, dass man über 18 Kapitel nicht nur die Komplexität der Aufgaben, sondern auch den Anspruch an den Coding-Stil schrittweise steigert. So hätte man meiner Meinung nach nicht gänzlich auf das eine oder andere Standard-Pattern für eine strukturierte JS-Programmierung verzichten müssen. Selektoren, die innerhalb weniger Zeilen 4..5 Mal aufgerufen werden (teilweise auch innerhalb von Schleifen), darf man schonmal cachen. Das mag für die konkreten Beispiele nicht lebenswichtig sein, hilft aber auch Einsteigern ein Gefühl für mögliche Performance-Probleme zu entwickeln für den Fall, dass auch mal größere Mengen an DOM-Manipulationen von Nöten sind. Guten Stil muss man nicht zwingend theoretisch belehrend herunterbeten, gerade Einsteigern kann man ihn leicht vermitteln, indem man ihn einfach vorlebt.

Deutliche Kritik muss man an dem Kapitel zum interaktiven HTML5-Videoplayer üben, denn dessen Codequalität ist wirklich erschreckend schlecht. In diesem Kapitel sollen Produktinformationen zeitsynchron zu einem Video angezeigt werden. Die dafür erforderlichen Daten werden per Ajax vom Server dynamisch nachgeladen. Allerdings wird auf das Ergebnis dieses Ajax-Requests zugegriffen, ohne überhaupt auf dessen Existenz zu prüfen, bzw. auf seine Verfügbarkeit zu warten. Eine Callback-Funktion für einen Ajax-Error (sowas soll’s ja auch geben) gibt’s ebenfalls nicht. Die Daten werden einfach als “verfügbar” erklärt. Variablen werden nicht deklariert (sie werden dadurch zwangsweise global), eine Strukturierung des Codes – auch im Sinne einer einfacheren Wiederverwendung – findet nicht statt. Die globalen Variablen sind schon deshalb ein Problem, weil bereits bei einem zweiten Video gleicher Art auf der Seite, das Script sich zwangsläufig selbst die Werte überschreibt. Dass dieses Codebeispiel überhaupt funktioniert, ist mehr als glücklich. Denn die Asynchronität der success-Callbacks, die sich aus dem Ajax-Request, wie auch aus der Initialisierung des Videoplayers ergeben, wird weder angesprochen, noch im Code berücksichtigt und ich bin mir nicht sicher, ob dem Autor das Problem vollständig bewusst ist. Hier hat mindestens die Qualitätskontrolle versagt, wenn es denn eine gab.

An einer Stelle wird “unobtrusive JavaScript” erwähnt, kurze Zeit später jedoch Teile einer Webseite initial per JavaScript, sorry: jQuery, ausgeblendet, die nur bei Interaktion sichtbar werden sollen. Damit wird das Konzept von unobtrusive JavaScript auf den Kopf gestellt, denn das Ausblenden funktioniert ohne JavaScript nunmal nicht, genauso wie das zugehörige interaktive Feature. Das ist ein konzeptioneller Fehler, der ebenfalls vermeidbar gewesen wäre. Auf diese Weise summieren sich kleine und große Unsauberkeiten.

Ich arbeite nun schon seit über vier Jahren mit jQuery und habe in den Anfangszeiten neben einigen schnellen Erfolgen auch massenweise Fettnäpfe erwischt, in die ich mangels besseren Wissens, schlechter Tutorials und unperformanter Plugins gestolpert bin. Gerade wenn mit dem Rückenwind der ersten Erfolgen der Mut wächst, sich an größeren Aufgaben zu versuchen, ist ein sauberer Stil und ein solides Grundwissen nicht zu ersetzen. Deshalb hat mich Gerrits schnippische Antwort auf einen berechtigten, kritischen Kommentar von Alexander Farkas (welcher auf weitere Probleme aufmerksam macht) aus seinem eigenen Blog sehr gewundert. Zitat:

Was ist schon schlechter Programmierstil? Und vor allem: Was ist guter? Darüber wirst du viele verschiedene Meinungen finden. 

Richtig ist, dass man vieles aus dem Workshop eleganter und effizienter lösen kann. Aber es ist ein Einsteiger-Workshop mit einem gewissen Crashkurs-Charakter. Da kann man nicht stundenlang über Code-Qualität theoretisieren. [...], denn in ein paar Stunden »Über die Schulter gucken« bringt man den Leuten eben am besten solche Dinge bei, die sie sofort anwenden können.
[...]
Das Schöne an jQuery ist doch gerade, dass damit Einsteiger schnell (und dreckig) zu tollen Ergebnissen kommen. [...] Würden alle Webdesigner deine Maßstäbe anlegen, gebe es deutlich weniger spannende Anwendungen von jQuery.

Das (und ganz besonders die von mir fett hervorgehobenen Passage) hat mich vom Hocker gehauen. Es ist das eine, was man im Alltag mit jQuery/JavaScript anstellt. Es ist aber etwas anderes, wenn man vorgibt, Einsteigern etwas beizubringen zu wollen und sein Wissen zu Geld machen will. Da führt um Sorgfalt und Qualität kein Weg herum.

Egal, wie viel oder wenig Zeit man für die Vermittlung von Wissen hat. Man kann einen Einsteiger auf irgendeinen Weg führen oder auf den Richtigen. Man wird ihn auf beiden Wegen nur ein paar erste Schritte begleiten können und man kann ihm auf beiden Wegen schnelle Erfolge präsentieren. Der Unterschied besteht in der Zeit danach, wenn die Käufer eines mit 39,99 EUR (Einstiegspreis: 34,99 EUR) im Vergleich zu den Videotrainings einiger renomierter Verlage nicht unbedingt günstigen Video-Workshops, eigenständig weiterlaufen sollen. Jede Handwerker-Lehre beginnt damit, dass die Azubis lernen, dass man sein Werkzeug ordentlich behandelt und den Arbeitsplatz regelmäßig aufräumt. Schwer vorstellbar, dass in einem Video-Workshop für angehende Webentwickler derartige Werte keinen Platz mehr finden müssen.

Gerrit weist in seinem Blogbeitrag ausdrücklich auf die angenehmen wirtschaftlichen Rahmenbedingungen bei Undoversity hin:

Timo erledigt Produktion, Marketing, Vertrieb, Technik und Controlling in Eigenregie und ist dadurch mehrere Dimensionen effizienter als ein beliebiger Verlag es je sein könnte. Und das kommt natürlich auch den Tutoren zugute. Dass mein Anteil am Verkauf signifikant höher ausfällt als die 3–5%, die man sonst so bekäme, ist logisch.

Dem Lob an die Undsoversity-Macher schließe ich mich uneingeschränkt an, allerdings mit dem persönlichen Nachsatz: Die Verlage, mit denen ich bei bisher als Autor oder Fachgutachter bei verschiedenen Projekten zusammengearbeitet habe, legen großen Wert auf die inhaltliche Qualität und deren Kontrolle. Es ist schön, wenn die gesteigerte Effizienz zu höheren Einnahmen der Autoren führt – reich wird mit Fachbüchern oder Videotrainings nämlich niemand. Aber die Qualität der Produkte sollte in keinem Fall leiden, denn im Direktvertrieb ist eben auch direkt und ausschließlich die eigene Reputation in Gefahr. Deshalb meine Empfehlung an Gerrit: die Schwachstellen identifizieren und den Workshop überarbeiten.

Ich weise darauf hin, dass sich meine Meinung ausschließlich auf die drei Probekapitel des deutlich umfangreicheren jQuery-Workshops stützt und die hier formulierte Kritik auch nur diese drei Kapitel betrifft. Zu den weiteren 15 Kapiteln kann ich nichts sagen, denn gekauft habe ich den Video-Workshop nicht.


Du kannst die Kommentare zu diesen Eintrag durch den RSS 2.0 Feed verfolgen. Du kannst einen Kommentar schreiben, oder einen Trackback auf deiner Seite einrichten.

Dieser Eintrag kann nicht mehr kommentiert werden.