Comme mentionné par d'autres, c'est une question de compromis et d'avoir la bonne connaissance.
Le seul écueil que vous voudrez peut-être considérer est le suivant: vous mentionnez dans votre question que vous considérez le Web comme un "multiplateforme" comme un avantage. Mais est-ce vraiment le cas? Pensez-y de cette façon: si vous développez quelque chose pour le bureau, vous devez définir la liste des plates-formes et leurs exigences à prendre en charge.
Ne vous y trompez pas, c'est pareil pour le web. Et même si c'est déjà beaucoup plus simple qu'auparavant, si vous concevez une application publique large, vous devrez gérer toutes les versions possibles de tous les navigateurs Web. Et s'il s'agit plus d'une application d'entreprise, préparez-vous et préparez-vous à rédiger très précisément les exigences de vos plates-formes de navigateur prises en charge.
Ne pensez pas que vous éviterez d'avoir des hacks spécifiques à la plate-forme ici et là si vous construisez quelque chose d'important.
Et puis les parties amusantes. Quel est le meilleur? Les navigateurs qui se mettent à jour de manière quasi transparente très régulièrement comme Chrome? Ou ceux qui déploient des mises à jour de sécurité uniquement mensuellement et des fonctionnalités majeures à chaque âge de pierre (comme IE)? La réponse n'est pas aussi évidente que vous pourriez le penser, car certaines de ces mises à jour fréquentes "transparentes" peuvent casser votre code, et vous devrez suivre cela et réagir rapidement. Ou gardez un œil sur les pré-versions bêta et dev lors du développement et des tests. Pour tous les navigateurs, vous avez stupidement dit que vous vouliez soutenir (bonne chance).
Oh et n'oublions pas les considérations d'interface utilisateur. Vous aussi face à la joie de décider si vous voulez une interface utilisateur cohérente ACROSS toutes vos plates - formes cibles, ou une interface utilisateur cohérente AVECplate-forme cible de chaque hôte. Voir tous ces petits boutons que vous pouvez afficher sur les pages Web? Voulez-vous qu'ils soient exactement les mêmes partout ou s'intègrent à l'environnement utilisé par votre utilisateur? Bien sûr, ce problème n'est pas nouveau et existait pour d'autres modèles de développement, mais il semble être plus important ici, et dépend du type d'utilisateurs que vous ciblez et de ce qu'ils attendent. L'utilisateur final public aurait tendance à vouloir que vous vous intégriez à sa plate-forme - mais il voudra toujours que vous "wow!" les avec des trucs de fantaisie - tandis que l'utilisateur d'entreprise voudra quelque chose qui ressemble à une application de bureau. Et les plateformes mobiles avaient une nouvelle dimension à tout cela.
Pour les 2 derniers paragraphes, une idée courante consiste parfois à emballer un navigateur Web préconfiguré avec votre programme d'installation, qui se connecte ensuite à votre application Web (hébergée localement ou sur le Web). C'est génial car vous contrôlez la fréquence de mise à jour et vous pouvez "geler" l'état et vous savez exactement sur quoi prendre en charge et tester. De plus, vous pouvez ajouter des trucs sympas comme des extensions utilisateur dédiées. Par exemple, empaqueter un Chrome "gelé" avec de petites extensions Chrome que vous avez développées pour faciliter l'utilisation de votre application web pour différents types d'utilisateurs peut être extrêmement agréable. D'un autre côté ... vous êtes désormais responsable si une violation de sécurité se produit parce que vous avez gelé le cycle de publication, et votre application ne bénéficiera pas d'améliorations de vitesse (le cas échéant).
Comme beaucoup de choses, c'est une hache à double tranchant.
Remarque: J'ai un fort parti pris contre le Web pour être essentiellement un gros tas de technologies à moitié cuites (et je suis poli ici), jusqu'aux couches OSI, sur lesquelles nous continuons d'ajouter des couches de merde cachant les problèmes en dessous sans vraiment résoudre ou les réparer.
Cela étant dit, je suis en faveur du Web pour sa nature omniprésente en tant que plate-forme. Je pense que la décision de votre entreprise est (probablement) la bonne. Cela dépend de votre marché cible et des plates-formes que vous visez, évidemment. Si vous souhaitez exposer quelque chose en tant que service, vous êtes probablement prêt à partir (même si ce n'est pas nécessaire non plus). Si vous ne le faites pas, il n'y a peut-être pas tant de raisons à cela.
Hmm, et attendez-vous à des développements amusants à l'avenir maintenant que davantage de variantes légères des systèmes d'exploitation existants continuent de se reproduire pour les environnements mobiles (netbooks, smartphones, PDA, tablettes, eBooks ...), avec plus d'accent sur l'utilisation de navigateurs intégrés légers. .. mais avec toute leur nouvelle part de problèmes de rendu de l'interface utilisateur.
En ce qui concerne les technologies basées sur les plugins ... je dirais de les éviter. Ils amélioreront la puissance de votre application, mais limiteront sa pénétration sur le marché. Dans certains cas, vous le verrez comme un avantage en termes de support multiplateforme, jusqu'à ce qu'une nouvelle plateforme refuse soudainement de les prendre en charge. Les normes Web sont là pour une raison (faites attention à ne pas trop vous exciter pour tout dans HTMl5, sinon cela pourrait vous exploser au visage).
EDIT: d'autres choses à considérer ...
Recrutement
Il est extrêmement difficile de trouver des développeurs Web compétents. On pourrait penser qu'il y en a un troupeau, mais ils sont perdus dans un énorme pool de personnes, enfin, assez incompétents qui pensent avoir réussi à écrire 700 lignes de JavaScript / ECMAScript pour implémenter une validation dans leurs formulaires est la fin et tout ce qui peut être réalisé en termes de compétences de haut niveau.
Je ne plaisante pas, dernièrement, ma première question pour toutes les interviews de développement Web est de savoir comment déclarer une variable, puis s'il y a une différence entre l'utilisation var
ou non (selon la façon dont ils répondent). C'est déprimant. Je trouve qu'il est beaucoup plus difficile de trouver un développeur Web moyen ou avancé que de trouver un développeur de bureau moyen ou avancé.
la perception
Personne ne vous considérera jamais sérieusement lorsque vous dites «je suis développeur Web». C'est pour une sous-classe de programmeurs, développeurs, n'est-ce pas? Ceux que vous ignorez et raillez de loin, et ne rejoignez pas quand ils vont chercher du café. :)
C'est évidemment faux, mais cela revient au fait que vous développez pour un environnement qui est principalement géré pour vous. Les navigateurs corrigent votre balisage vissé, vos styles vissés, et même corrigeront vos scripts vissés pour certains d'entre eux, et l'optimiseront pour vous si vous le souhaitez. Et si vous êtes un développeur Web, les gens ne supposeront pas que vous avez une idée de la programmation de niveau inférieur, vous devez donc être un idiot complet, non?
Et puis ils réalisent à quel point ECMAScript peut être incroyablement complexe, mais refusent de revoir leur opinion. Parce que c'est le web. Nous ne l'aimons pas intrinsèquement, nous aimons juste ce qu'il nous permet de faire.