Startseite › Tipps / 14. Juli 2010
Aus der Berufspraxis: Fehlentscheidungen der Webentwickler
Seit nun über 10 Jahren entwickle ich Web Apps. In diesem Zeitabschnitt hatte ich mit Entwicklern unterschiedlicher Schichten zu tun: Von blutigem Anfänger bis zum Vollprofi, Freelancer und Festangestellte. Die Zusammenarbeit im Team hat viele nützliche Dinge offenbart, darunter auch die amateurhafte Vorgehensweise an bestimmte Worklflow-Abschnitte, die am Ende für mehr Komplexität, Zeitaufwand und Durcheinander im Projekt gesorgt haben. Ein paar Beispiele anbei.
1. Schnell, Hauptsache online
Anstatt nach der Fehlerursache im Quelltext zu suchen, wird gern drumherum gebastelt, um das “(Bohr)Loch” abzudichten. Handelt es sich um einen kritischen Fehler mit hoher Priorität, so mag ein rascher Workaround in der Tat eine wirkungsvolle Notlösung sein. Andernfalls soll die Zeit genommen und dem Bug auf den Grund gegangen werden. Erst dann können Aspekte wie Sicherheit, Performance, Kompatibilität, Codearchitektur, Tests und Dokumentation ausreichend berücksichtigt und tatkräftig umgesetzt werden. Fehlt aktuell die eingeschätzte Zeit für eine vollständige Fix-Implementierung, gehört der Punkt zur späteren Erledigung auf die Todo-Liste gesetzt und sollte schnellstmöglich nachgeholt werden.
2. Fehlender Vorschaubereich für den Kunden
Ein Dev(eloper)-Server (gern eine Virtualisierung auf lokalem Rechner) dient ausschließlich der internen Entwicklung. Der Kunde hat nie den Zugang zum Entwicklungssystem und wird somit fern von der “Kochstube” gehalten. Auf der Test- bzw. Stage- bzw. Preiview-Umgebung bekommt die Kundschaft dagegen einen Stand des Fortschritts zur Verfügung gestellt, der letztendlich auf dem Live-Server automatisiert oder manuell gespiegelt wird. Der Zwischenschritt, sozusagen.
Vorteil dieser Vorgehensweise: Auf Dev kann unbesorgt weitergeschraubt werden, um weitere Meilensteine im Hintergrund zu erreichen. Der Kunde wiederum prüft das Projekt samt Neufunktionen in aller Ruhe auf Stage. Bei Freigabe erfolgt eine direkte Beförderung des kontrollierten Zustandes auf Live.
3. Mangelhafte Aktualität der Entwicklungsumgebung
Die Entwicklungsumgebung (Dev) wird – Dank dem nicht wegzudenkenden Stress und enormen Zeitdruck seitens Kunde – öfters stiefmütterlich behandelt. Vor allem bei der Pflege des Inhalts ist Faulheit der Programmierer zu beobachten. Auch wenn der Content der Webseiten dynamisch aus der Datenbank generiert wird (das ist zum Beispiel bei CM- und Shop-Systemen der Fall), soll dieser stets fleißig gepflegt werden. Ausreden wie “Live sind die notwendigen Bilder ja da, wird schon passen.” dürfen unter Entwicklern keine Akzeptanz und Gültigkeit finden.
Bestenfalls bedient man sich der Live-Umgebung mit – hoffentlich – aktuellem Stand, schnappt sich ein paar Artikel und pflegt sie auf der Entwicklungsplattform nachträglich ein. Automatisiert per Datenbank-Synchronisierung oder manuell nach Bedarf. Es muss nicht unbedingt der inhaltliche Gesamtumfang der Live-Umgebung kopiert werden, wenige Einträge samt Medien reichen vollkommen. Hauptsache man arbeitet unter realen Bedingungen mit z.B. Texten in richtiger Länge, Grafiken korrekter Größe. So kann jede so unwichtige Fallunterscheidung auf ihre Richtigkeit und Vollständigkeit getestet und spätere Überraschungen auf der Produktivumgebung vermieden werden. Ordnung muss sein!
4. Aktualisierungen am letzten Arbeitstag
Unprofessionel und verantwortungslos: Kurz vor dem Wochenende oder Urlaub eine Aktualisierung der Website durchführen. Nicht selten decken ausgeführte Tests nur einen Bruchteil potentieller Fehler auf. Selbst zusätzliche Prüfvorgänge durch den Kunden lassen Mängel im Funktionsumfang unentdeckt verbleiben. Eventuelle Besucherhinweise auf vorhandene Ungereimtheiten können an den Wochenendtagen kaum wahrgenommen werden. Der kritische Fehler bleibt über mehrere Tage hinweg bestehen. Ärgerlich.
[Der Autor] Sergej Müller ist enthusiastischer Software Engineer mit Schwerpunkten Webentwicklung und WordPress. Seit 2007 programmiert und vertreibt er wpSEO, das weltberühmte und patentierte SEO-Plugin für WordPress-Blogs.
Seitenzugriffe und Besucher in Google Analytics nach Stunden auflisten
JavaScript: Flinke Möglichkeit den verwendeten Browser zu erkennen
13 Kommentare zum Artikel
Bei dem letzten Punkt hast du ja recht, aber meistens ist das sehr unrealistisch. Ich hatte schon komplexe Shop-Projekte die bis Freitag Nacht fertig werden mussten weil Samstags die erste Werbung gebucht war. Leider ist das Zusammenspiel Kunde – Marketing – Development meistens ziemlich unorganisiert. Zumindest sagt das meine Erfahrung! :) Und “schnell online” wollen sie alle sein. ;)
zu 4. habe ich den Dienstag favorisiert. Wer Freitags ein Update, Launch oder whatever schiebt hat’s nicht besser verdient ;) /slap
Ansonsten volle Zustimmung, ohne Frage
@Michael
Jepp, so sieht die Realität aus. In solchen Fällen gebe ich dem Kunden eine Empfehlung ab und weise darauf hin, dass am Wochenende kaum einer aus der Entwicklungsabteilung erreichbar ist und der Fehler eventuell nicht sofort behoben werden kann.
@derWebArchitekt
Bei mir ist es der Mittwoch.
Den Artikel unterschreibe ich so. :)
Das betrifft nicht nur den Webbereich, sondern gilt in jeder Art von Softwareentwicklung. Ich arbeite im Support eines Softwareunternehmens und mir laufen viel zu oft die oben genannten Punkte über den Weg. Gerade die Freitagslieferung mit anschließendem sofortigen Wochenendstart sind “sehr beliebt” – weil ich dann das Bugfixing noch am Freitagnachmittag am Hals habe. :)
Sonnige Grüße vom Bodensee
Jörg
Aloha Sergej,
kann dir bei den Punkten nur zustimmen… aber am Schlimmsten finde ich immer noch die mangelnde Termin-Weitsicht ;)
Cheers, Andi
Dem kann ich so zustimmen. Was gibt es denn für Lösungen um die Datenbank zu aktualisieren, wenn an deren Struktur durch evtl. unvorhergesehene Erweiterungswünsche Änderungen vorgenommen werden mussten, die Inhalte beispielsweise Artikel eines CMS usw. jedoch abgeglichen werden sollen. Gibt es da eine Lösung auf Basis von SVN oder ähnlichen Möglichkeiten?
@Dominik
Würde es in dem Fall nicht reichen, einen DB-Dump einzuspielen?
Es braucht 10 Jahre Erfahrung, um solche Selbstverständlichkeiten niederzuschreiben? Na dann …
@Andi
Mindestens. Damit Besserwisser wie du, was zu meckern hätten…
Amen! Volle Zustimmung. Habe mich an Punkt 1 schon sehr oft genervt, wenn man zu einem Projekt hinzugezogen wird, und es nach schnell-schnell-lösung aussieht (Einarbeitungszeit brutal).. auch Eigenverschulden^^.
Toller Artikel :)
Volle Zustimmung, eine kleine Anmerkung vielleicht, die Punkte gelten auch für alle andere SW-Entwicklungen, habe das alles auch schon auf dem Mainframe erlebt ;-)
Jetzt muss ich mir mal auf die Finger hauen. Ich mach bei mir gern Updates zum Wochenende, das liegt aber glücklicherweise daran, dass wochenends niemand das Projekt nutzt und montags kaum jemand Lust darauf hat und ich den ganzen Montag mit Fehlersuche verbringen kann :D
Das ist der kleine Vorteil, den man hat, wenn man für (eine – mit 270.000 Mitarbeitern – doch sehr große) Behörden Intranet-Auftritte umsetzt.
Das mach ich aber auch nur bei diesem Projekt. Bei privaten, bin ich auch eher der Montag- oder Dienstag-Updater.
Ansonsten kann ich den Artikel voll zustimmen
Zu Punkt 4:
Als Webentwickler bzw. SWentwickler allgemein hat man doch kein Wochenende ;)
Bugs oder auch Sicherheitslücken können immer wieder entdeckt werden, wer da nicht erreichbar ist, wird sich wohl schnell nach einem neuen Job umschauen dürfen.
Nichts ist schlimmer wie 1000 Schrottseiten im Index, weil irgendwo ein Fehler im Code ist.