Produktivitätssteigerung bei Web Entwicklung

Nach einigen Webprojekten auf Basis von Java und tomcat war es an der Zeit einen Technologiesprung zu machen. Die Überarbeitung eines CMS Systems stand an. Nach längerer Suche viel die Wahl auf node.js als Server und Semantic-ui als UI Library. 

Gleich vorneweg. Die Neuimplementierung des CMS Systems brauchte nur rund 30% der Zeit die das ursprüngliche Projekt gebraucht hat. Wenn man einbezieht, dass im ursprünglichen Projekt eine gewisse Lernkurve notwenig war, liegt die Produktivitätssteigerung immer noch bei rund der halben Zeit für die Implementierung. Das ist beachtlich. Woran liegt das?

Eine wesentliche Eigenschaft von node.js ist die Verfügbarkeit von sehr gut angepassten Paketen, die praktisch alle im realen Betrieb auftretenden Anforderungen kapseln und mit wenigen API Zugriffen verfügbar machen. Ein Beispiel ist das Paket Moment.js das alle denkbaren Operationen auf Zeitstempeln und Datumswerten enthält. Hunderte Zeilen alter Java Code für die Transformation von Datumsstrings in Epoch Werte und so weiter verschwinden und machen Platz für mehr Produktivität. Ein Beispiel ist die Humanize Funktion mit der aus einem Zeitintervall eine verständliche Zeitangabe wird:

moment.duration(1, "minutes").humanize(); // a minute
moment.duration(2, "minutes").humanize(); // 2 minutes
moment.duration(24, "hours").humanize();// a day

Weitere Beispiele solcher hochproduktiver Pakete sind express.js, ein Web Framework, passport.js ein Framework für Authentifizierung und handlebars.js eine Template Engine. Spezielle Erfahrungen gab es mit node.js im Bereich Source Code Management und Deployment. Dazu aber mehr in einem eigenen Blog Eintrag.

Das UI wurde in dem CMS Projekt mit Semantik-UI umgesetzt. Das Ergebnis war eine überraschend schnelle Lernphase. Die CSS und Javascript Element können gezielt und intuitiv eingesetzt werden. Die einzige negative Erfahrung war die fehlende Unterstützung von Internet Explorer Versionen unter IE9 und einzelne Issues mit IE9 aufgrund von flexbox Fehlern im IE.


Mobile App mit Ionic

Bisher war die Entwicklung von Mobilen Apps immer mit der Fragestellung verbunden, auf welchen Plattformen die App den laufen sollte. Mit jeder zu unterstützenden Platform kam ein wesentlicher Kostenblock dazu, da für jede Platform eine eigene Implementierung notwendig wurde. 

Schon seit einiger Zeit gibt es Projekte, die das Ziel haben diese Aufteilung aufzuheben. Das bekannteste ist wohl phonegap, das von Adobe betrieben wird.  Auffällig sind auch cocoon.io, Ionic und framework7. Was die meisten der übergreifenden Frameworks gemeinsam haben, ist das sie auf cordova aufbauen. Cordova hat sich aus phonegap entwickelt und wird heute von der Apache Foundation unterstützt.

Für ein neues Projekt viel die Wahl nach längerer Suche auf Ionic. Die Demo Apps, Beschreibung der Workflows und die Dokumentation machen eine guten Eindruck. Auch die Suche in Foren nach aktuellen Antworten und Diskussionen zeigen viel Aktivität.

Im Projekt musste zuerst eine weitere Hürde genommen werden. Ionic basiert auf Cordova und Angular.js, was eine gewisse Umstellung notwendig machte. Die ersten Views der App wurden danach aber rasch erstellt und sahen gut aus. Probleme gab es beim Zugriff auf den Server. Ionic wird auf einem Browser entwickelt. Ein Browser lässt aber keine Zugriffe auf andere Quellen zu um cross-site-scripting zu vermeiden. Ionic bietet eine Lösung mit Hilfe eines lokalen Proxies. Nur leider funktioniert diese Lösung dann nicht auf den mobilen Endgeräten. Für das Deployment auf Geräte musste der Code jedesmal geändert werden. Bis zum Ende des Projektes war noch keine Lösung dafür in Sicht. In weiterer Folge wurde eine Google Map, GPS und der Compass integriert und liefen auf Android erfolgreich. 

Das Projekt ist noch im Laufen. Es wird spannend, ob die Kamera Integration so funktioniert wie geplant und ob daraus eine valide Release Version entsteht. Mehr dazu in einem weitern Blog Eintrag.

Stay tuned.