¿Todavía vale la pena aprender el desarrollo de la GUI de escritorio? [cerrado]

18

Durante los últimos años, todos los proyectos serios en los que he trabajado han estado basados ​​en la web o tenían una interfaz de usuario no gráfica (servicios, scripts de línea de comandos, etc.). Puedo armar una aplicación WinForms o hacer un simple WPF cuando sea necesario, pero nunca he profundizado en algunas de las API de nivel inferior como MFC o QT.

Entiendo que esto depende de la situación, pero en general, ¿vale la pena tomarse el tiempo para aprender bien el desarrollo de escritorio o las aplicaciones se están moviendo a la web y a los dispositivos móviles a un ritmo que hace que este conocimiento sea menos relevante? Además, ¿espera que los desarrolladores con los que trabaja tengan experiencia con la interfaz gráfica de usuario de escritorio?

aubreyrhodes
fuente
55
Tener un desarrollo de aplicaciones de escritorio es excelente, pero por amor a Knuth, no te molestes con MFC. Todo lo que necesitará para el 95% de los trabajos de aplicaciones de escritorio de Windows es WinForms o WPF / XAML. El otro 5% de los trabajos que no quieres tener.
Adam Crossland
1
@Adam: +1 para "El otro 5% de los trabajos que no quieres tener". - Tan verdadero. :)
Bobby Tables

Respuestas:

38

Yo diría que sí, lo es. Hay una especie de efecto pendular en el desarrollo del programa. Primero todo corrió directamente en la computadora. Luego, cuando la computadora se volvió lo suficientemente potente como para ejecutar múltiples programas, obtuvieron mainframes con terminales tontas. Pero las terminales tontas realmente apestan en términos de usabilidad, por lo que tan pronto como las computadoras se volvieron lo suficientemente potentes como para colocar cantidades razonables de hardware dentro de un sistema del tamaño de una terminal, obtuvimos computadoras personales, y todo se ejecutó directamente en la computadora.

Entonces se inventó la World Wide Web, y estamos de vuelta a un mainframe (servidor) y un terminal tonto terminales (navegador). Pero mudos todavía chupan realmente en términos de facilidad de uso, y la gente está empezando a volver a aprender las lecciones de hace 30 años , y estamos alejándonos de eso otra vez. Gran parte del desarrollo realmente candente en estos días es para aplicaciones de escritorio (o móviles) que se ejecutan localmente, pero que pueden conectarse a Internet con fines específicos para mejorar su funcionalidad.

Mason Wheeler
fuente
55
+1 por señalar que estas tendencias se ejecutan en ciclos. Sin embargo, he visto un caso en el que una aplicación de terminal se reescribió como una aplicación de escritorio, y los usuarios pudieron trabajar de manera más eficiente con la aplicación de terminal.
Larry Coleman
2
La diferencia con los navegadores es que, de hecho, pueden ejecutar código en el sistema local, y esta capacidad crece con cada generación de navegadores. La consecuencia de eso es que la diferencia de usabilidad entre las aplicaciones web y de escritorio no es tan grande. Para muchas personas (incluido yo mismo), gmail es más útil que Outlook. El péndulo oscila menos lejos cada vez, y se detendrá a la mitad, con aplicaciones que son una mezcla de partes locales y en la nube, independientemente de la tecnología subyacente.
Joeri Sebrechts
13
+1, odio cuando la gente comienza a decir que el escritorio está muerto, es ridículo.
Dr. Hannibal Lecter
1
@Joeri: La mayoría de las terminales siempre pueden hacer al menos algunos bits y piezas localmente. Una cantidad deprimente de JavaScript que he visto hace cosas que un IBM 3270 (por ejemplo) podría haber hecho localmente también.
Jerry Coffin
1
@Joeri Sebrichts: cuando Gmail me permite arrastrar y soltar un correo electrónico en una tarea o elemento de calendario, puedo estar de acuerdo con usted, pero hasta entonces, hay muy pocas funciones.
JeffO
11

Incluso si nunca tiene la intención de hacer un desarrollador de escritorio, le sugiero que obtenga suficiente experiencia como para tener una opinión informada sobre cuándo es mejor usar una solución de escritorio en un cliente web.

Cuenta
fuente
+1: Asumir que "el escritorio está muerto" y que las aplicaciones de creación de carteles son lo opuesto a los desarrolladores de escritorio puros que dicen "eso nunca podría ser bueno como una aplicación web". Elija con qué quiere trabajar, pero conozca al otro lo suficiente como para conocer sus verdaderos beneficios / dificultades.
Steven Evers
8

Sí, pero no en la forma en que estás pensando.

La programación GUI no es más difícil ni requiere habilidades especializadas además de la familiaridad con la interfaz de programación GUI. Conectar botones, ventanas y controles no es terriblemente difícil y es bastante fácil con entornos de programación modernos en comparación con los primeros días con cosas como MFC. La programación de la GUI es algo que es bastante fácil de aprender cuando se requiere.

Sin embargo, aunque conectar botones y cuadros de texto es bastante fácil, saber cuándo y dónde colocar los botones, y diseñar una interfaz gráfica de usuario para ser utilizada por los seres humanos es muy difícil. Esa es una habilidad muy valiosa e importante para tener. Sin embargo, los principios de diseño que se aplican a las interfaces nativas frente a la web son muy similares.

Aprenda a diseñar buenas interfaces de usuario que sean efectivas y no confundan a los usuarios, y se familiarizará con la programación de forma gratuita.

como se llame
fuente
2
Especialmente en estos días, la experiencia del usuario está a cargo del diseño del software. La arquitectura ya no está a cargo.
rwong
5

Realmente va a depender de tu situación. Recientemente trabajé para una compañía Fortune 500 que tenía varios proyectos para convertir aplicaciones web nuevamente en aplicaciones de escritorio (SmartClient / Click-Once). En sus circunstancias particulares, tenía mucho sentido y eliminaba varios problemas de usabilidad que sufrían sus aplicaciones existentes.

Si usted es un empleado a tiempo completo y su empresa generalmente no diseña aplicaciones de escritorio, entonces probablemente no tenga ningún sentido estar totalmente actualizado en Winforms o WPF. Sin embargo, si usted es un consultor y le gustaría poder ofrecer otro servicio a sus clientes, entonces no puede perjudicarlo.

Walter
fuente
4

Hmm, además de GMail, Stack-Exchange y la banca en casa de mi banco, uso todo el día software no web. Ahora, con la llegada de los teléfonos inteligentes y las tabletas, las aplicaciones web son aún menos atractivas para mí (uso el cliente de Facebook de mi teléfono inteligente). Eso es del lado del usuario.

Lado del desarrollador: en mis últimos 10 años, trabajé casi solo en software que no es web (y mi carrera abarcó muchos dominios muy diferentes mientras trabajaba como consultor de software) y no veo ninguna tendencia web futura en mi trabajo.

Entonces, sí, sigue siendo un aprendizaje obligatorio en entornos de interfaz gráfica de usuario de escritorio.

Wizard79
fuente
2
Wow, ¿no usas un motor de búsqueda de Internet?
JBRWilkinson
1
@JBRWilkinson: no, confío en Gopher. En serio, seguro uso Google todo el día, pero eso no es realmente un reemplazo para ninguna herramienta o aplicación de escritorio.
Wizard79
2

Por supuesto, "depende", pero creo que su experiencia es típica. Raramente he tenido que crear un cliente grueso para cualquiera de las aplicaciones que he escrito. A menos que haya una razón específica por la que el cliente necesita ejecutarse en el escritorio (problemas de conectividad o juego en 3D, etc.), creo que es más fácil para el desarrollador y los administradores mantener una "instancia" de la aplicación. Si tienen el conjunto de habilidades para diseñar una aplicación web, deberían estar bien si se mueven al ámbito de la aplicación de escritorio en general.

En realidad, creo que es más importante que un desarrollador de cliente grueso aprenda la programación de aplicaciones web; la herencia de la apatridia de HTTP hace que sea un paradigma de desarrollo de aplicaciones más difícil de entender (o al menos tiene que pensar un poco más que simplemente abofetear) controles en un panel).

No lo olvide: tiene tecnologías como Silverlight y Adobe Flex / AIR que pueden abarcar la línea entre la aplicación de escritorio / web.

Watson
fuente
+1 para el desarrollo web es más difícil. Comencé como desarrollador de escritorio y tuve que pasar al desarrollo web en el trabajo. Definitivamente es más complejo (obviamente, esto es asumir tareas comparables, lo cual no es fácil).
Bobby Tables
@Guzica: sí, he encontrado una actitud similar por parte de los buenos desarrolladores con los que he trabajado que estaban bloqueados en el desarrollo de aplicaciones de escritorio. Una vez que intentan hacer el cambio, no es tan fácil para ellos como pensaban. No sé si esta es una complejidad inherente en la programación de aplicaciones web, es solo una forma diferente de programar, y muchas de las suposiciones subyacentes de lo que puede hacer el sistema deben cambiar (además de aprender nuevos marcos).
Watson
Siempre es más difícil hacer cosas con herramientas que son más limitadas, eso no lo hace "más complejo". Lo hace más complicado.
Sam
0

Según el equipo de IE9:

No debería haber una brecha entre las aplicaciones nativas y las aplicaciones web. La aceleración HW, el JS rápido y la fijación del sitio lo inician

Creo que es una apuesta segura que estas tecnologías crecerán más juntas. Si es un desarrollador de Java, hay muy poca diferencia entre desarrollar aplicaciones de escritorio y aplicaciones web (usando GWT). No es irrazonable esperar que cada vez más plataformas de desarrollo "de escritorio" puedan apuntar al motor del navegador. Tampoco es irracional esperar que cada vez más aplicaciones de escritorio tengan un modelo de distribución similar a la web (actualización automática en segundo plano, ejecución de espacio aislado, como Chrome).

Joeri Sebrechts
fuente
3
Eso es BS total. Estoy trabajando en una aplicación de medición de latencia que debe ubicarse localmente para medir y mostrar en "tiempo real" las latencias de entrega de datos de mercado. Este tipo de cosas NUNCA se moverá a la nube.
Tim
¿Es BS total porque ha encontrado una necesidad ridículamente oscura de que una aplicación sea local?
Mike M.
@Tim: tienes razón en que algunas aplicaciones siempre serán locales. También es cierto que otras aplicaciones nunca podrían ser locales (por ejemplo, Google Translate). Pero, ejecutar localmente no implica que no provenga de la nube. Chrome se ejecuta localmente pero es una aplicación basada en la nube (tiene poco control sobre qué "versión" es). Hay intentos de vincular la ejecución de código nativo en plataformas de navegador (Google NaCl), e intentos de vincular idiomas web a aplicaciones nativas (Adobe Air).
Joeri Sebrechts
1
@ Mike M: eso no es ridículamente oscuro. En mi trabajo anterior trabajé en el software de a bordo de la Marina. Es probable que tampoco estén en la nube. Es probable que los dominios en los que trabajo no migren; tienen que ser locales por razones de latencia e interfaz de hardware. La web es agradable, pero algunos de nosotros todavía trabajamos en el área de aplicaciones nativas por alguna razón.
Tim
@Tim Mi punto es que has encontrado un escenario que no se sostiene. El autor se da cuenta de esto cuando dice MÁS. Se te ocurrió un contrapunto, y eso es genial. De ninguna manera has probado que todo el asunto no tiene base. Por supuesto, habrá momentos en los que tendrá que ser local por múltiples razones. Pero para la gran mayoría, coloque un cable de fibra óptica y sus 1200 millas se pueden cruzar en 10 milisegundos. Como usuario, estaría de acuerdo con que cada una de mis aplicaciones de escritorio demore 10 milisegundos más en cargar un formulario.
Mike M.