Warum die Wartung von Webanwendungen eine größere Sache sein sollte
Veröffentlicht: 2022-03-10Herkömmliche Softwareentwickler haben uns offenkundig ein Geheimnis verheimlicht. Es ist nicht einmal eine umstrittene Tatsache. Es ist Teil ihres Geschäftsmodells.
Es spielt keine Rolle, ob es sich um High-End-Enterprise-Softwareanbieter oder kleinere Softwarehäuser handelt, die die Tools schreiben, die wir alle täglich in unserer Arbeit verwenden, oder um Unternehmen wie einen kostenlosen Syslog-Manager. Es ist genau dort vorne und in der Mitte. Mehrkosten, die sie nicht verheimlichen und an deren Zahlung wir uns gewöhnt haben.
Also, was ist dieses Geheimnis?
Nun, viele traditionelle Softwareanbieter verdienen mehr Geld mit der Wartung der von ihnen geschriebenen Software als mit dem Erstverkauf.
Nicht überzeugt?
Eine schnelle Suche nach dem Begriff „Total Cost of Ownership“ liefert Ihnen viele ähnliche Definitionen wie diese von Gartner (Hervorhebung von mir):
[TCO sind] die Kosten für Implementierung, Betrieb, Support und Wartung oder Erweiterung und Außerbetriebnahme einer Anwendung.
Darüber hinaus behauptet dieses Papier der Universität Stanford, dass die Wartung normalerweise 60 % bis 90 % der Gesamtbetriebskosten eines Softwareprodukts ausmacht.
Es lohnt sich, das für eine Minute sacken zu lassen . Sie verdienen weit über dem anfänglichen Kaufpreis, indem sie laufende Support- und Wartungspläne verkaufen.
Wir drängen keine Wartung
Das Problem, wie ich es sehe, ist, dass wir uns in der Webentwicklungsbranche nicht auf die Wartung von Webanwendungen konzentrieren. Wir könnten es in unsere Vorschläge aufnehmen, weil uns die Idee eines monatlichen Vorschusses gefällt, aber sie werden wahrscheinlich einfache Haushaltsaufgaben oder neue Funktionsanfragen abdecken.
Es ist nicht ungewöhnlich, wesentliche Upgrades und Optimierungen in unseren Angeboten für spätere Iterationen zu verstecken, weil wir nicht davon überzeugt sind, dass der Kunde für die Dinge bezahlen möchte, die wir als wesentliche Verbesserungen ansehen. Wir versuchen, sie durch die Hintertür reinzubringen. Oder mit anderen Worten, wir sind nicht offen und transparent, dass diese Anwendungen genau wie traditionellere Software gewartet werden müssen.
Unabhängig von den Gründen wird deutlich, dass wir Probleme für die Zukunft aufspeichern. Die Softwareanwendungen, die wir entwickeln, sind langfristig da . Wir müssen wie traditionelle Softwareanbieter denken. Unsere Software läuft noch 10 oder 15 Jahre und sollte gepflegt werden.
Also, wie können wir das ändern? Wie stellen wir alle als Branche sicher, dass unsere Kunden geschützt sind, damit die Dinge sicher und auf dem neuesten Stand bleiben? Wie bekommen wir gleichermaßen einen Teil des Wartungskuchens ?
Was ist Wartung?
Heather Smith und James McKeen definieren in ihrem Artikel „Effective Application Maintenance“ aus dem Jahr 2012 Wartung als (Hervorhebung von mir):
Das Portieren einer Anwendung auf einen neuen Server, die Anbindung an ein anderes Betriebssystem, das Upgrade auf eine neuere Version, die Änderung einer Steuertabelle oder die Einhaltung neuer Vorschriften – all dies erfordert eine Anwendung – Wartung. Infolgedessen konzentriert sich die Wartung auf das Upgrade einer Anwendung, um sicherzustellen, dass sie produktiv und/oder kosteneffektiv bleibt . Die von der Fokusgruppe bevorzugte Definition der Anwendungswartung ist — jede Änderung einer Anwendung zur Behebung von Fehlern; um die Leistung zu verbessern; oder um die Anwendung an eine veränderte Umgebung oder geänderte Anforderungen anzupassen. Daher wird das Hinzufügen neuer Funktionalität zu einer bestehenden Anwendung (dh Verbesserung) streng genommen nicht als Wartung betrachtet .
Mit anderen Worten, die Wartung ist eine wesentliche Arbeit, die an einer Softwareanwendung durchgeführt werden muss, damit sie weiterhin zuverlässig und sicher funktioniert.
Es werden keine neuen Funktionen hinzugefügt. Es überprüft keine Protokolldateien oder stellt sicher, dass Sicherungen ausgeführt wurden (dies sind Verwaltungsaufgaben). Es arbeitet am Code und der zugrunde liegenden Plattform, um sicherzustellen, dass die Dinge auf dem neuesten Stand sind, dass es so funktioniert, wie es seine Benutzer erwarten würden, und dass die Lichter an bleiben.
Hier sind ein paar Beispiele:
Technologie- und Plattformänderungen
Bibliotheken von Drittanbietern müssen aktualisiert werden. Die zugrunde liegende Sprache erfordert ein Update, zB PHP 5.6 auf PHP 7.1 Moderne Betriebssysteme versenden regelmäßig Updates. Den Überblick zu behalten ist Wartung und manchmal werden auch Änderungen an der Codebasis erforderlich sein, da die alten Methoden, bestimmte Dinge zu tun, veraltet sind.Skalierung
Wenn die Anwendung wächst, treten Ressourcenprobleme auf. Routinen innerhalb des Codes, die mit 10.000 Transaktionen pro Tag gut funktionierten, kämpfen mit 10.000 pro Stunde. Die Anwendung muss überwacht werden, aber es müssen auch Maßnahmen ergriffen werden, wenn Warnungen ausgelöst werden.Fehler beheben
Offensichtlich, aber es wert, explizit gemacht zu werden. Die Software hat Fehler, und sie müssen behoben werden. Selbst wenn Sie nach der Auslieferung eines Projekts einen kleinen Zeitraum für kostenlose Fehlerbehebungen einplanen, muss der Kunde irgendwann dafür bezahlen.
Schwer zu verkaufen?
Wenn ich dies mit meinen Kollegen bespreche, haben sie interessanterweise das Gefühl, dass es schwierig ist, Kunden davon zu überzeugen, dass sie Wartung benötigen. Sie sind besorgt, dass ihre Kunden nicht über das nötige Budget verfügen und wollen nicht zu teuer erscheinen.
Nun, hier ist die Sache: Es ist eigentlich ein ziemlich einfacher Verkauf. Wir haben es mit Geschäftsleuten zu tun, und mit denen müssen wir einfach kaufmännisch über Wartung sprechen. Geschäftsleute verstehen, dass Vermögenswerte gewartet werden müssen oder zu Verbindlichkeiten werden. Es ist nur ein weiterer standardmäßiger laufender monatlicher Overhead. Kosten der Geschäftstätigkeit. Wir müssen dies nur in unsere Vorschläge aufnehmen und dafür sorgen, dass wir es weiterverfolgen .
Eine äußerst effektive Methode ist es, einen Retainer anzubieten, der die Wartung im Kern beinhaltet, aber auch viele Mehrwerte für den Kunden bündelt, wie zum Beispiel:
- Berichterstattung über Fortschritt vs. KPIs (z. B. Traffic, Conversions, Suchvolumen)
- Jeden Monat begrenzte „freie“ Zeit für kleine Änderungen an der Website
- Berichterstattung über Ausfallzeiten, Server-Updates oder abgeschlossene Entwicklungsarbeiten
- Telefonischer Zugang zu Ihnen oder bestimmten Mitgliedern Ihres Teams, um Fragen zu beantworten
In der Tat können Sie den Retainer dazu bringen, dem Kunden Geld zu sparen und sich selbst zu bezahlen. Ein gutes Beispiel hierfür wäre die Anforderung eines Kunden, jeden Monat einen einfachen Bericht oder Export aus der Datenbank zur Offline-Verarbeitung zu erhalten.
Sie könnten für eine Reihe von Entwicklungstagen ein Angebot machen, um eine – wahrscheinlich komplexere als ursprünglich angenommene – Benutzeroberfläche für die Berichterstellung zu erstellen, oder alternativ den Kunden auf Ihren Vorschuss verweisen. Fügen Sie darin jeden Monat eine Aufgabe für einen Entwickler ein, um eine voreingestellte SQL-Abfrage manuell auszuführen, um dieselben Daten manuell bereitzustellen.
Eine triviale Aufgabe für Sie oder Ihr Team; viel Wert für Ihren Kunden.
Ein praktisches Beispiel
Sie werden natürlich Ihre eigene Art haben, Vorschläge zu schreiben, aber hier sind ein paar Ausschnitte aus einem Beispiel-Pitch.
In dem Abschnitt Ihres Vorschlags, in dem Sie Ihre Vision für die Zukunft skizzieren könnten, können Sie etwas über Wartung hinzufügen. Nutzen Sie dies als Gelegenheit, den Samen für eine langfristige Beziehung zu pflanzen.
Sie möchten das langfristige Risiko minimieren.
Sie möchten sicherstellen, dass Ihre Anwendung gut funktioniert, sicher bleibt und einfach zu bearbeiten ist.
Sie verstehen auch, wie wichtig die Wartung für jedes Geschäftsvermögen ist.
Später können Sie im Abschnitt „Leistungen“ einen Teil zur Wartung hinzufügen, entweder als eigenständige Option oder gebündelt mit einem fortlaufenden Vorschuss.
Im folgenden Beispiel halten wir es einfach und bündeln es mit einem im Voraus bezahlten Entwicklungs-Retainer:
Wir setzen uns nachdrücklich dafür ein, dass alle Kunden die Wartung als wesentlichen Overhead für ihre Website betrachten. Moderne Webanwendungen sind pflegebedürftig und genau wie Ihr Haus oder Ihr Auto; Sie halten Ihr Vermögen aufrecht, um das konkrete Risiko zu verringern, dass es später zu Verbindlichkeiten wird .
Als Kunde, der vernünftigerweise daran interessiert ist, den Überblick über die Wartung der Anwendung zu behalten und neue Funktionen hinzuzufügen, würden wir N Tage pro Monat (als Ausgangspunkt) für die allgemeine Wartung und den Entwicklungsvorschuss vorschlagen.
Wir würden die Dinge so verteilen, dass ein Entwickler mindestens [einen Zeitraum pro Woche/Monat] an Ihrem System arbeitet, was Ihnen den entscheidenden Vorteil gibt, dass ein Entwickler in der Lage ist, zu etwas Wichtigerem zu wechseln, falls während des [gleichen Zeitraums] Probleme auftreten. . Abhängig von Ihren Prioritäten kann diese Zeit vollständig für die Arbeit an neuen Funktionen oder für die Wartung aufgewendet werden, es liegt an Ihnen. Wir empfehlen normalerweise eine Aufteilung von 75 %/25 % zwischen neuen Funktionen und wichtigen Wartungsarbeiten.
Wie bereits erwähnt, ist dies auch eine großartige Gelegenheit, die Wartung mit anderen Mehrwertdiensten wie Leistungsberichten, der Durchführung von Haushaltsaufgaben wie der Überprüfung von Backups und vielleicht einem monatlichen Anruf zur Besprechung von Fortschritten und Prioritäten in einen Topf zu werfen.
Was Sie wahrscheinlich feststellen werden, ist, dass, nachdem Sie die Arbeit gelandet haben, der Vorschuss dann nicht mehr erwähnt wird. Dies ist verständlich, da es für Sie und Ihren Kunden zu Beginn eines Projekts viel zu bedenken gibt, aber wenn das Projekt zu Ende geht, ist ein guter Zeitpunkt, es als Teil Ihres Projekt-Offboarding-Prozesses wieder einzuführen.
Egal, ob es um Phase 2 geht oder einfach nur um die Einführung von Schlussrechnungen und die Übergabe, erinnern Sie sie an die Wartung. Erinnern Sie sie an fortlaufende Schulungen, Berichterstattung und Unterstützungsbereitschaft . Streben Sie nach einem Retainer und denken Sie daran, in denselben kommerziellen Begriffen zu sprechen: Ihr neuer Vermögenswert muss gepflegt werden, um glänzend zu bleiben .
Kann Wartung lästig sein?
Ein weit verbreiteter Irrglaube ist, dass Wartungshonorare zu einer zusätzlichen Belastung werden können. Die Sorge ist, dass Kunden Sie ständig anrufen und nach kleinen Verbesserungen als Teil Ihres Vorschusses fragen werden. Dies ist ein besonderes Anliegen für kleinere Teams oder Einzelberater.
Dies ist jedoch normalerweise nicht der Fall. Vielleicht hat der Kunde am Anfang eine Liste mit Hindernissen, die durchgearbeitet werden müssen, aber das ist selbstverständlich; Wenn Sie erfahren sind, dann erwarten Sie es. Diese lassen sich leicht verwalten, indem die Kommunikationskanäle verbessert werden (mit einem Issue-Tracker) und alle Anfragen in einen Topf geworfen werden, dh sie in einem einzigen Treffer bearbeiten.
Wenn die Anwendung ausgereift ist, verfallen Sie in einen Tick-Over-Modus. Hier wird der Retainer für beide Seiten besonders wertvoll. Es hängt natürlich davon ab, wie Sie den Retainer strukturiert haben, aber aus Ihrer Sicht bemühen Sie sich, den Kunden jeden Monat daran zu erinnern, wie wertvoll Sie sind. Sie können ihnen Ihren Monatsbericht schicken, ihnen sagen, wie Sie eine Verlangsamung in dieser Routine behoben haben und dass der Server für den globalen Betriebssystem-Exploit dieser Woche gepatcht wurde.
Natürlich standen Sie auch zur Verfügung, um an einer Reihe neuer gewünschter Funktionen zu arbeiten , die zusätzlich kostenpflichtig waren . Aus der Perspektive Ihres Kunden sehen sie, dass Sie da sind, sie sehen Fortschritte und können „Sorgen um die Website“ von ihrer Liste streichen. Natürlich gibt es „diese Kunden“ jedoch, daher ist es am wichtigsten, Ihre Retainer-Formulierung richtig zu formulieren und die Erwartungen entsprechend zu verwalten.
Wenn Ihr Kunde den Mond am Stiel für eine niedrige monatliche Gebühr erwartet, schieben Sie ihn zurück oder verhandeln Sie neu. Sie für – sagen wir – zwei Stunden Wartung und Haushaltsführung pro Monat zu bezahlen, neben der Bereitstellung eines monatlichen Berichts und anderer Nebenaufgaben, ist genau das; Es ist kein Blankoscheck, viele Ad-hoc-Änderungen vorzunehmen. Erinnern Sie sie daran, was enthalten ist und was nicht.
Wie machen wir die Wartung einfacher?
Schließlich, um den besten Wert für Ihre Kunden zu gewährleisten und Ihr Leben einfacher zu machen, verwenden Sie einige dieser Taktiken beim Erstellen Ihrer Anwendungen.
Langfristiger Support (LTS)
- Verwenden Sie Technologieplattformen mit gut dokumentierten LTS-Releases und Upgrade-Pfaden.
- Laufende Betriebssystem-, Sprach-, Framework- und CMS-Upgrades sollten für alle Projekte erwartet und berücksichtigt werden, sodass die Verfolgung einer LTS-Version ein Kinderspiel ist.
- Alles sollte auf einer unterstützten Version laufen. Wenn dies nicht der Fall ist, sollten große Alarmglocken läuten.
Gute Projekthygiene
- Veröffentlichen Sie Wartungsaufgaben in Ihrem Feature-Backlog oder Issue-Tracking-System und vereinbaren Sie Prioritäten mit Ihrem Kunden. Verstecken Sie die Wartungsaufgaben nicht.
- Code-Level- und Funktionstests ermöglichen es Ihnen, besonders problematischen Code im Auge zu behalten, und helfen beim Herausziehen von Modulen zum Refactoring.
- Überwachen Sie die Anwendung und verstehen Sie, wo die Engpässe und Fehler liegen. Alle Probleme können dem Entwicklungsrückstand hinzugefügt und entsprechend priorisiert werden.
- Überwachen Sie Supportanfragen. Geben Endbenutzer Ihnen nützliches Feedback, das auf Wartungsanforderungen hinweisen könnte?
Die Anwendung sollte portabel sein
- Jeder Entwickler sollte in der Lage sein, das System einfach lokal zum Laufen zu bringen – nicht nur Sie! Verwenden Sie virtuelle Server oder Container, um sicherzustellen, dass die Entwicklungsversionen der Anwendungen mit der Produktion identisch sind.
- Die Bewerbung sollte gut dokumentiert sein. Als Minimum sollten die Bereitstellungs- und Bereitstellungs-Workflows und alle speziellen Aufrufe, die für die Bereitstellung erforderlich sind, aufgeschrieben werden.
Wartung ist eine echte Win-Win-Situation
Wartung ist die Arbeit, die wir an einer Anwendung durchführen müssen, damit sie sicher stillstehen kann. Es handelt sich um übliche Geschäftskosten. Durchschnittlich 75 % der Gesamtbetriebskosten über die Lebensdauer einer Softwareanwendung.
Als Fachleute haben wir die Sorgfaltspflicht, unsere Kunden von Anfang an über die Wartung aufzuklären . Hier liegt eine enorme Chance für zusätzliches Einkommen und gleichzeitig einen greifbaren Mehrwert für Ihre Kunden. Sie pflegen eine laufende Geschäftsbeziehung und sind die erste Person, an die sie sich wenden, wenn sie neue Anforderungen haben.
Wenn Sie durch Ihren Retainer weiterhin einen Mehrwert bieten, bauen Sie Vertrauen beim Kunden auf. Sie erhalten eine Plattform, um Verbesserungen oder neue Funktionen vorzuschlagen. Arbeit, bei der Sie eine große Gewinnchance haben. Ihr Kunde reduziert seine Lebenszeitkosten, er reduziert sein Risiko und er muss sich keine Gedanken mehr über Leistung oder Sicherheit machen.
Tun Sie sich, Ihrem Kunden und unserer gesamten Branche einen Gefallen: Helfen Sie mit, die Wartung von Webanwendungen zu einer Sache zu machen.