Desarrollo web versus escritorio: ¿es peor el desarrollo web? [cerrado]

29

Como desarrollador de escritorio desde hace mucho tiempo que busca hacer nuestra primera aplicación web a gran escala, ¿cuáles son los pros y los contras de hacer desarrollo web?

¿Desarrollar una aplicación web es mucho peor que desarrollar una aplicación de escritorio? Por ejemplo, ¿es más tedioso o molesto? ¿El tiempo de comercialización es mucho peor? ¿La plataforma web es excesivamente limitante? Si la respuesta a cualquiera de estas preguntas es sí, ¿por qué?

(¿Y cómo se compara el desarrollo de una aplicación Flash o Silverlight?)

Josh Kelley
fuente
55
No he votado para cerrar, pero creo que podría ser más constructivo si pudiera ser rediseñado en un punto de vista de desarrollo web versus desarrollo de escritorio.
Josh K
K: Bien, intenté reformular la pregunta sin invalidar las respuestas existentes. Gracias.
Josh Kelley

Respuestas:

26

No

Es doloroso si no sabes lo que estás haciendo o no planeas correctamente, pero eso es cierto con cualquier desarrollo. Es más fácil empaquetar la aplicación en una aplicación de escritorio, pero luego pierde la accesibilidad que proporciona la codificación de una aplicación web.

Elegiría entre escritorio y web en función del uso deseado. Veo muchas aplicaciones escritas basadas en la web que no deberían ser porque no saben cómo codificar aplicaciones de escritorio. Sin embargo, no veo muchas aplicaciones de escritorio que deberían estar basadas en la web, y creo que es algo a considerar. Si necesita el almacenamiento centralizado, la accesibilidad remota y los rasgos de la interfaz de usuario, entonces seguro .

No puedo comentar sobre Flash o Silverlight porque no uso ninguno.

Josh K
fuente
55
Odio ser ese tipo pero ... :s/loose/lose/:)
Dr. Hannibal Lecter
@dr Hannibal: lo arregló. A veces toco dos veces las teclas. ;)
Josh K
44
@dr Hannibal: Hay una disonancia cognitiva que proviene de las palabras "Odio ser ese tipo" de "Hannibal Lecter" :)
Skilldrick
25

Como lo mencionaron otros, es una cuestión de compensaciones y de tener el conocimiento correcto.

El único escollo que es posible que desee considerar es el siguiente: menciona en su pregunta que considera que la web tiene una ventaja "multiplataforma". ¿Pero lo hace realmente? Piénselo de esta manera: si desarrolla algo para el escritorio, debe definir la lista de plataformas y sus requisitos de soporte.

No se equivoque, es lo mismo para la web. Y a pesar de que ya es tremendamente más simple de lo que solía ser, si diseña una aplicación pública amplia, tendrá que lidiar con todas las versiones posibles de cada navegador web. Y si se trata más de una aplicación empresarial, prepárese y prepárese para redactar sus requisitos de plataformas de navegador compatibles con mucha precisión.

No piense que evitará tener hacks específicos de la plataforma aquí y allá si construye algo significativo.

Y luego las partes divertidas. ¿Qué es lo mejor? ¿Los navegadores que se actualizan casi transparentemente con mucha regularidad como Chrome? ¿O los que implementan actualizaciones de seguridad solo mensualmente y características principales cada edad de piedra (como IE)? La respuesta no es tan obvia como podría pensar, porque algunas de estas actualizaciones "transparentes" frecuentes pueden romper su código, y deberá seguir esto y reaccionar rápidamente. O vigile las versiones preliminares beta y dev durante el desarrollo y las pruebas. Para todos los navegadores que tontamente dijiste que querías apoyar (buena suerte).

Ah, y no olvidemos las consideraciones de la interfaz de usuario. También se enfrentan a la alegría de decidir si desea una interfaz de usuario consistente TRAVÉS todas sus plataformas de destino, o una interfaz de usuario consistente CONplataforma de destino de cada host. ¿Ves todos esos pequeños botones que puedes ver en las páginas web? ¿Desea que sean exactamente iguales en todas partes o que se integren con el entorno utilizado por su usuario? Por supuesto, este problema no es nuevo y existió para otros modelos de desarrollo, pero parece ser más importante aquí, y depende del tipo de usuarios a los que se dirija y de lo que esperan. El usuario final público tenderá a querer que se integre con su plataforma, pero aún así querrá que "¡vaya!" ellos con cosas elegantes, mientras que el usuario empresarial querrá algo que se parezca a una aplicación de escritorio. Y las plataformas móviles tenían una nueva dimensión para todo esto.

Para los últimos 2 párrafos, una idea común es a veces empaquetar un navegador web preconfigurado con su instalador, que luego se conecta a su aplicación web (alojada localmente o en la web). Es genial porque controlas la frecuencia de actualización y puedes "congelar" el estado y sabes exactamente qué apoyar y probar. Además, puede agregar cosas interesantes como extensiones de usuario dedicadas. Por ejemplo, empaquetar un cromo "congelado" con pequeñas extensiones de Chrome que ha desarrollado para facilitar el uso de su aplicación web para diferentes tipos de usuarios puede ser extremadamente agradable. Por otro lado ... ahora eres responsable si ocurre una violación de seguridad porque congelaste el ciclo de lanzamiento, y tu aplicación no se beneficiará de las mejoras de velocidad (si las hay).

Como muchas cosas, es un hacha de doble filo.

Nota: Tengo un fuerte sesgo en contra de la web por ser básicamente una gran pila de tecnologías a medias (y soy cortés aquí), hasta las capas OSI, en las que seguimos agregando capas de basura ocultando los problemas debajo sin resolver realmente o arreglarlos.

Dicho esto, estoy a favor de la web por su naturaleza ubicua como plataforma. Creo que el movimiento de su empresa es (probablemente) el correcto. Depende de su mercado objetivo y de las plataformas a las que apunta, obviamente. Si desea exponer algo como un servicio, entonces probablemente esté listo (aunque tampoco es necesario). Si no lo hace, entonces tal vez no haya tantas razones para ello.

Hmm, y espero algunos desarrollos divertidos en el futuro ahora que las variantes más livianas de los sistemas operativos existentes siguen generando para entornos móviles (netbooks, teléfonos inteligentes, PDA, tabletas, libros electrónicos ...), con más énfasis en el uso de navegadores integrados livianos. .. pero con toda su nueva cuota de fallas de renderizado de UI.

Con respecto a las tecnologías basadas en complementos ... Diría que aléjese de ellas. Mejorarán el poder de su aplicación, pero limitarán su penetración en el mercado. En algunos casos, lo verá como una ventaja en términos de soporte multiplataforma, hasta que una nueva plataforma de repente se niegue a admitirlos. Los estándares web están aquí por una razón (tenga cuidado de no entusiasmarse demasiado con todo en HTMl5, o podría explotar en su cara).


EDITAR: otras cosas a considerar ...

Reclutamiento

Es extremadamente difícil encontrar desarrolladores web con conocimientos. Uno pensaría que hay una manada de ellos, pero están perdidos en un gran grupo de personas, bueno, bastante incompetentes, que piensan que haber logrado escribir 700 líneas de JavaScript / ECMAScript para implementar alguna validación en sus formularios es el final. y todo lo que se puede lograr en términos de habilidades de alto nivel.

No estoy bromeando, últimamente mi primera pregunta para todas las entrevistas de desarrollo web es cómo declarar una variable y luego si hay una diferencia entre usar varo no (dependiendo de cómo respondan). Es deprimente. Me resulta mucho más difícil encontrar un desarrollador web promedio o avanzado que encontrar un desarrollador de escritorio promedio o avanzado.

Percepción

Nadie lo considerará en serio cuando diga "Soy un desarrollador web". Es para una subclase de programadores, desarrolladores, ¿no? Los que ignoras y burlas desde lejos, y no te unes cuando van a tomar café. :)

Obviamente, esto no es cierto, pero se reduce al hecho de que se desarrolla para un entorno que se gestiona principalmente para usted. Los navegadores corrigen su marcado jodido, sus estilos jodidos, e incluso corregirán sus secuencias de comandos jodidas para algunos de ellos, y lo optimizarán para usted si lo desea. Y si usted es un desarrollador web, la gente no asumirá que tiene una pista sobre la programación de nivel inferior, por lo que debe ser un completo idiota, ¿verdad?

Y luego se dan cuenta de cuán locamente complejo puede ser ECMAScript, pero se negarán a revisar su opinión. Porque es la web. No nos gusta intrínsecamente, simplemente nos gusta lo que nos permite hacer.

haylem
fuente
-2, +10 ... Veo que generé cierta controversia;)
haylem
Las diferencias entre los navegadores se han convertido cada vez menos en un problema. Ciertamente, hay pequeñas inconsistencias en la forma en que manejan CSS y otras cosas, pero en su mayor parte, nunca he tenido un problema importante con un navegador moderno. A menos que esté en la vanguardia con HTML5, <canvas>y cosas así ...
Dean Harding
66
"Nota: Tengo un fuerte sesgo en contra de la web por ser básicamente una gran pila de tecnologías a medias (y soy cortés aquí), hasta las capas OSI, en las que seguimos agregando capas de basura ocultando los problemas debajo sin realmente resolviéndolos o arreglándolos ". - ¿¿¿¿¿ERES YO?????
Bobby Tables
2
Trabajé con un par de tipos que son verdaderos gurús del desarrollo web, hacen cosas increíbles y lo usan como una plataforma de desarrollo de software seria. Tienen mi profundo respeto. Pero eso es solo dos en los últimos 15 años. El resto ... bueno, una vez conseguí un concierto como "experto" de Perl solo porque mi código de muestra estaba estructurado en lugar del espagueti al que estaba acostumbrado el entrevistador; en ese momento, mi genuina experiencia en Perl podría encajar en un dedal.
Bob Murphy
2
+1 para que ECMAScript sea bueno, malo y se llame ECMAScript.
Alan Pearce
14

Como alguien que se ha ocupado de ambos (más escritorio que web): mi mayor queja es, con mucho, la sensación de "torpeza general" en el desarrollo web. Incluso con las mejores herramientas y marcos, las abstracciones siguen siendo muy permeables y constantemente estás lidiando con el hecho de que estás ejecutando un protocolo sin estado.

Otra molestia relacionada es la combinación de tecnologías que se utilizan para implementar aplicaciones web. No hay un entorno agradable, monolítico y modular en el que se pueda hacer todo. Incluso las aplicaciones web relativamente simples requieren que codifique las cosas en un puñado de lenguajes de programación, scripting y marcado separados.

Entonces, como respuesta general: , realmente es tan malo. Al menos si vienes de un fondo de escritorio tradicional donde estás acostumbrado a codificar cosas en un entorno limpio y sin problemas, usando una tecnología y una plataforma donde todo es bastante lineal y bien definido. La mejor manera es simplemente no tratar de pensarlo como el mismo campo. Si sigues esperando inconscientemente que el desarrollo web sea "como el desarrollo de escritorio", siempre parecerá muy desagradable y molesto.

Mesas Bobby
fuente
44
La razón por la que se sentía "generalmente torpe" es quizás porque estaba usando marcos que intentaban "abstraerse" ... ¿qué, la web? La web no tiene estado. No importa cuánto "formularios web" en ASP.NET quiera hacerle pensar de otra manera, nunca olvide que no tiene estado. Cuanto más rápido un desarrollador lo acepte como una verdad inmutable, más rápido comenzará a escribir aplicaciones web de calidad.
Jason Whitehorn
1
+1, bien dicho. Incluso con marcos como Rails, que se supone que son la solución para escribir todo en una sola pila tecnológica, logran arruinarlo cambiando las prácticas recomendadas de RJS a "JS discreto".
Jas
11

El mayor replanteamiento del escritorio a la web es: la aplicación web es inherentemente sin estado

descifrar esa parte, y eres bueno.

Steven A. Lowe
fuente
¿Importa el navegador?
JeffO
Las inconsistencias entre navegadores de @Jeff son molestas, pero no realmente significativas
Steven A. Lowe
44
Debe escribir para navegadores reales (algunas inconsistencias), Internet Explorer (más inconsistencias) y quizás el hijo del diablo (IE6).
TRiG
2
@Malfist: si no tiene cuidado, con este enfoque (sin estado + sesiones = con estado) podría diseñar un emu con un motor de avión a reacción atornillado, cuando originalmente deseaba un águila;)
Piskvor
1
@ Jim G: por supuesto que lo es. Pero las diferencias entre los navegadores y otros son minúsculas en comparación con pasar de un diseño de aplicaciones con estado a otro sin estado.
Steven A. Lowe
5

Gran parte del tedio proviene del trabajo necesario para que todo funcione en todos los navegadores. Como lo más probable es que no necesite estar a la vanguardia, puede aprovechar el trabajo realizado por otros, eligiendo un marco web adecuado en lugar de manipular el suyo.

Cuál usar, depende en gran medida del entorno de idioma al que esté acostumbrado actualmente. Es posible que desee editar la pregunta para proporcionar esa información.


fuente
2
Problemas de compatibilidad del navegador son un dolor gigante, es cierto, pero a equilibrar esto, no se olvide de que está comparando con el desarrollo de escritorio, donde usted tiene que tratar con diferentes versiones de los sistemas operativos, bibliotecas, etc.
Carson63000
@Carson, si hacen desarrollo de escritorio Java, este dolor es realmente bastante mínimo. Tal vez sea mucho peor para .NET o Win32 API.
2

No, las aplicaciones web tienen diferentes compensaciones que las aplicaciones de escritorio. Cada uno tiene sus puntos fuertes en mi mente. Si bien existen fortalezas como una implementación única, existe la desventaja de saber qué navegadores admite y qué resolución de pantalla espera que tenga el cliente. Si bien tiene control sobre el hardware del servidor, existe la pregunta de cuánto tráfico espera y qué tan bien escalará. Para aquellos que han realizado desarrollo web durante años, estos pueden ser puntos dolorosos, como me imagino que tienes algunas tareas de desarrollo que consideras un gran dolor, ¿no?

Una aplicación Flash puede o no ser una aplicación web en mi opinión. Algo así como AIR puede hacer que algunas cosas de Flash se ejecuten en el escritorio ahora y algunas aplicaciones se basan en eso, por ejemplo Twhirl, por lo que no es tan inmediato como cortar y secar.

JB King
fuente
2

El desarrollo web no es necesariamente peor , es muy diferente.

Una de las cosas que separa el desarrollo web del desarrollo de escritorio es la gran cantidad de tecnologías radicalmente diferentes que debes dominar para desarrollar una aplicación decentemente compleja. Quiero decir, básicamente necesitas tener un fuerte conocimiento de:

  • HTML
  • Javascript
  • CSS
  • Algún lenguaje del lado del servidor (Java / PHP / lo que sea ...)
  • Un RDBMS (o alguna tecnología de tienda persistente)
  • ... y posiblemente muchas otras cosas como Flash, Silverlight, etc.

Mientras que, con el desarrollo de escritorio, generalmente está trabajando con un conjunto de tecnologías mucho más monolítico. Por ejemplo, desarrollar una aplicación Java básicamente requiere que conozcas Java, y eso es todo. (Por supuesto, eso es una simplificación, pero el punto es que el desarrollo web lo expone a una gama mucho más amplia de tecnologías radicalmente diferentes que necesitan trabajar juntas para formar una aplicación que funcione).

Charles Salvia
fuente
1

No

Siempre que elija las herramientas adecuadas, el desarrollo web es tan limpio y fácil como el desarrollo de escritorio.

Las API web (html, CSS, Javascript y DOM) son el equivalente de la API win32. Eventualmente, todo se reduce a ese nivel de API, pero estás loco si programas directamente encima de él sin una biblioteca para abstraerte del desorden, la verbosidad y la inconsistencia.

Por lo tanto, tenga cuidado con su elección de marcos. Algunos problemas son autoinfligidos al elegir herramientas malas (por ejemplo, problemas de compatibilidad del navegador).

Es posible tener una plataforma de desarrollo web limpia y coherente, con un solo idioma. Por ejemplo, si quiere que sea "todo java todo el tiempo", puede usar GWT y escribir tanto su código del lado del cliente como el código del lado del servidor en Java. O, si prefiere que sea todo javascript, puede elegir algo como Ext JS para el lado del cliente y node.js para el lado del servidor.

Joeri Sebrechts
fuente
0

Lo escuché describir como "... la ruina de mi existencia" y estaría de acuerdo. Me ofrecieron $$$ una hora para hacer desarrollo web HTML y lo rechacé. Es tanto dolor. Pasé la mayor parte del tiempo en HTML y recientemente comencé a trabajar con la "plataforma Flash". Es uno de los marcos más sofisticados que he visto y nadie lo sabe. Cuando las personas mencionan Flash, piensan en Flash desde hace 10 años. Ha crecido ... mucho. Me encanta escribir software nuevamente.

Todavía tiene sus desventajas. Los errores a veces permanecen para siempre, pero han mejorado (gracias Steve J.).

Por cierto, hay una escasez importante para los desarrolladores de Flex. Me han acercado tantas compañías que está enfermo. Si conoce su CS, entonces pase los siguientes 6 meses aprendiendo Flex hardcore y luego llámeme. Transmitiré todas las ofertas de trabajo que tengo que rechazar.

Actualización: el soporte cruzado del navegador es el principal problema. Lo que funciona en un navegador no funcionará en otro o lo hará, pero no en una versión anterior.

El proceso es más o menos así: - obtenga el diseño del sitio - intente recrearlo en un navegador de destino (esto puede ser difícil) - muestre al cliente - el cliente cambia el diseño - elimine todo el trabajo de diseño que hizo originalmente - hágalo funcional - el cliente lo aprueba - Haz que funcione en otros navegadores. Esta es la parte más difícil. Hay errores oscuros en todo el camino. Entonces encontrará características que los navegadores anteriores no admiten, como esquinas redondeadas. Intentarás reutilizar tu código y CSS pero eso se fragmenta rápidamente. Simplemente puede convertirse en un alto mantenimiento muy rápidamente. Agregue animaciones y estranguladores de navegadores antiguos.

El cliente hará cambios. Terminarás pasando todo tu tiempo haciendo "lo que deberían ser cosas simples" y odiarás tu vida. Te convertirás en un gurú y sabrás cosas que no quieres saber. Sé que suena dramático, pero no estoy adornando los problemas que enfrentarás. Los marcos lo harán más fácil. Si persiste en trabajar en HTML, entonces prepárese para recrear uno de sus sitios favoritos en HTML asegurándose de que coincida con el diseño y la funcionalidad en todos los navegadores que admite. Elimine los problemas que encuentre antes de comenzar a trabajar. Problemas como las mejores herramientas de diseño, los mejores marcos de javascript, las mejores herramientas de depuración, los mejores IDE, etc.


fuente
¿Podría editar su respuesta para explicar por qué la considera la ruina de su existencia?
Josh Kelley
Actualicé mi respuesta anterior
1
¿Tres dólares por hora? No es de extrañar que lo rechazaras, ¿es ese el salario mínimo en estos días? ;)
Piskvor