Wie von anderen erwähnt, geht es um Kompromisse und um das richtige Wissen.
Die einzige Gefahr, die Sie in Betracht ziehen könnten, ist die folgende: Sie erwähnen in Ihrer Frage, dass Sie das Web als "plattformübergreifend" betrachten. Aber ist es wirklich so? Stellen Sie sich das so vor: Wenn Sie etwas für den Desktop entwickeln, müssen Sie die Liste der zu unterstützenden Plattformen und deren Anforderungen definieren.
Machen Sie keinen Fehler, es ist das gleiche für das Web. Und auch wenn es bereits viel einfacher ist als früher, müssen Sie sich mit jeder möglichen Version jedes Webbrowsers auseinandersetzen, wenn Sie eine breite öffentliche App entwerfen. Wenn es sich eher um eine Unternehmensanwendung handelt, können Sie sich darauf vorbereiten, die Anforderungen für die unterstützten Browserplattformen sehr genau zu formulieren.
Denken Sie nicht, dass Sie plattformspezifische Hacks hier und da vermeiden, wenn Sie etwas Bedeutendes aufbauen.
Und dann die lustigen Teile. Was ist das beste? Browser, die sich fast transparent sehr regelmäßig aktualisieren, wie Chrome? Oder diejenigen, die Sicherheitsupdates nur monatlich bereitstellen und wichtige Funktionen in jeder Steinzeit bereitstellen (z. B. IE)? Die Antwort ist nicht so offensichtlich, wie Sie vielleicht denken, da einige dieser häufigen "transparenten" Aktualisierungen möglicherweise Ihren Code beschädigen und Sie diesem folgen und sofort reagieren müssen. Oder behalten Sie die Beta und Dev Pre-Releases im Auge, während Sie entwickeln und testen. Für alle Browser, die Sie dummerweise unterstützt haben (viel Glück).
Oh und lasst uns die UI-Überlegungen nicht vergessen. Sie haben auch die Freude, zu entscheiden, ob Sie eine konsistente Benutzeroberfläche für die Zielplattform wünschen alle Zielplattformen hinweg oder eine konsistente Benutzeroberfläche mit möchtenZielplattform jedes Hosts. Sehen Sie all die kleinen Schaltflächen, die Sie auf Webseiten anzeigen können? Möchten Sie, dass sie überall exakt gleich sind oder sich in die von Ihrem Benutzer verwendete Umgebung integrieren lassen? Natürlich ist dieses Problem nicht neu und existierte für andere Entwicklungsmodelle, aber es scheint hier wichtiger zu sein und hängt von der Art der Benutzer ab, die Sie ansprechen und was sie erwarten. Öffentliche Endbenutzer möchten in der Regel, dass Sie sich in ihre Plattform integrieren, möchten aber dennoch, dass Sie "wow!" sie mit ausgefallenen Sachen - während der Unternehmensbenutzer etwas möchte, das wie eine Desktop-App aussieht. Und mobile Plattformen hatten eine neue Dimension.
In den letzten beiden Absätzen besteht die häufigste Idee darin, einen vorkonfigurierten Webbrowser mit Ihrem Installationsprogramm zu packen, der dann eine Verbindung zu Ihrer Web-App herstellt (lokal gehostet oder im Web). Es ist großartig, weil Sie die Aktualisierungshäufigkeit kontrollieren und den Status "einfrieren" können und genau wissen, was Sie unterstützen und testen müssen. Außerdem können Sie coole Dinge wie dedizierte Benutzererweiterungen hinzufügen. Das Verpacken eines "eingefrorenen" Chromiums mit kleinen Chrome-Erweiterungen, die Sie entwickelt haben, um die Verwendung Ihrer Web-App für verschiedene Nutzertypen zu vereinfachen, kann beispielsweise äußerst hilfreich sein. Auf der anderen Seite ... sind Sie jetzt dafür verantwortlich, wenn eine Sicherheitsverletzung auftritt, weil Sie den Veröffentlichungszyklus eingefroren haben und Ihre App von Geschwindigkeitsverbesserungen (falls vorhanden) nicht profitiert.
Wie viele andere Dinge ist es eine zweischneidige Axt.
Anmerkung: Ich habe eine starke Vorliebe gegenüber dem Web, weil es im Grunde genommen ein Haufen von halbherzigen Technologien ist (und ich bin hier höflich), bis hin zu den OSI-Schichten, auf denen wir immer wieder Schichten Mist hinzufügen, um die Probleme darunter zu verbergen, ohne sie wirklich zu lösen oder reparieren sie.
That being said, bin ich zu Gunsten der Bahn für seine Allgegenwart als Plattform. Ich denke, der Umzug Ihres Unternehmens ist (wahrscheinlich) der richtige. Das hängt natürlich von Ihrem Zielmarkt und den Plattformen ab, die Sie anstreben. Wenn Sie etwas als Service verfügbar machen möchten, ist es wahrscheinlich eine gute Wahl (auch wenn dies nicht erforderlich ist). Wenn nicht, dann gibt es vielleicht nicht so viele Gründe dafür.
Hmm, und erwarten Sie in Zukunft einige unterhaltsame Entwicklungen, da für mobile Umgebungen (Netbooks, Smartphones, PDAs, Tablets, E-Books usw.) immer mehr Varianten vorhandener Betriebssysteme zum Einsatz kommen, bei denen der Einsatz von leichtgewichtigen eingebetteten Browsern im Vordergrund steht. .. aber mit all ihrem neuen Anteil an UI-Rendering-Pannen.
In Bezug auf Plugin-basierte Technologien würde ich sagen, lenken Sie von ihnen weg. Sie verbessern die Leistung Ihrer App, begrenzen jedoch deren Marktdurchdringung. In einigen Fällen wird dies als Plus für die plattformübergreifende Unterstützung angesehen, bis eine neue Plattform plötzlich die Unterstützung verweigert. Webstandards sind aus einem bestimmten Grund hier (achten Sie darauf, dass Sie sich nicht zu sehr über alles in HTMl5 aufregen, da dies sonst in die Luft jagen kann).
EDIT: andere Dinge zu beachten ...
Rekrutierung
Es ist äußerst schwierig , kompetente Webentwickler zu finden. Man könnte meinen, es gibt eine Herde von ihnen, aber sie befinden sich in einem riesigen Pool von ziemlich inkompetenten Leuten, die der Meinung sind, es geschafft zu haben, 700 Zeilen JavaScript / ECMAScript zu schreiben, um eine gewisse Validierung in ihren Formularen zu implementieren und alles, was in Bezug auf hochqualifizierte Fähigkeiten erreicht werden kann.
Ich mache keine Witze, in letzter Zeit ist meine erste Frage für alle Webentwicklungsinterviews, wie eine Variable deklariert wird und ob es einen Unterschied zwischen der Verwendung var
und der Nicht-Verwendung gibt (je nachdem, wie sie beantwortet werden). Es ist deprimierend. Ich finde es viel schwieriger, einen durchschnittlichen oder fortgeschrittenen Webentwickler zu finden, als einen durchschnittlichen oder fortgeschrittenen Desktopentwickler.
Wahrnehmung
Niemand wird Sie jemals ernsthaft in Betracht ziehen, wenn Sie sagen "Ich bin ein Webentwickler". Es ist für eine Unterklasse von Programmierern, Entwicklern, nicht wahr? Die, die du ignorierst und von weitem verspottest und die nicht mitmachen, wenn sie Kaffee holen. :)
Dies ist offensichtlich falsch, aber es kommt darauf an, dass Sie sich für eine Umgebung entwickeln, die größtenteils für Sie verwaltet wird. Browser korrigieren Ihr verkorkstes Markup, Ihre verkorksten Stile und korrigieren sogar Ihr verkorkstes Scripting für einige von ihnen und optimieren es für Sie, wenn Sie möchten. Und wenn Sie ein Webentwickler sind, werden die Leute nicht davon ausgehen, dass Sie eine Ahnung von der Programmierung auf niedrigerer Ebene haben. Sie müssen also ein kompletter Idiot sein, oder?
Und dann erkennen sie, wie verrückt komplex ECMAScript sein kann, werden sich aber weigern, ihre Meinung zu überprüfen. Weil es Web ist. Wir mögen es nicht an sich, wir mögen nur, was es uns ermöglicht.